過年了,各種走親訪友,大吃大喝。為了不讓自己忘了演算法為何物,做了幾道練手的題。
nyist 46
最少乘法次數
給你乙個非零整數,讓你求這個數的
n次方,每次相乘的結果可以在後面使用,求至少需要多少次乘。如24:
2*2=22
(第一次乘),
22*22=24
(第二次乘),所以最少共2次;
分析:實際上那個指數是很大的,題目描述有問題。
#include #include #include using namespace std;
const int n=5e6+10;
int p[n];
void init()
return 0;
}
nyist 66
分數拆分
大意:輸入乙個正整數k,找到所有的正整數x>=y,使得1/k=1/x+1/y.
分析:做完此題,瞬間感覺到浮點數的強大。
#include #include #include using namespace std;
const double eps=1e-7;
int main()}}
return 0;
}
nyist 743 複雜度
問:for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
for(k=j+1;k<=n;k++)
operation;
你知道 operation 共執行了多少次嗎
分析:規律題。i相當於在n個元素中取m個,這m個元素是遞增的。即m個元素一旦選定,就只有一種情況,沒有排列的情況。所以:c(n,m)
用素因子做居然wa了。為什麼。。。
wa:
#include #include #include using namespace std;
typedef long long ll;
const ll mod=1009,n=2005;
ll pri[n],cnt;
bool vis[n];
void getpri()
return ans;
}int main()
printf("%d\n",ans);
}return 0;
}
打表:
#include #include #include using namespace std;
const int mod=1009,n=2005;
int dp[n][n];
void init()
return 0;
}
平時刷題之word chain
問 乙個字串插入或者減少乙個字元變成新字元,或者是更改某乙個字元,變成新字元,則稱新字串跟原來字串能夠成為wordchain。要求寫這麼乙個函式來實現這個功能 寫的原理就是分幾類,差距為2字元直接排除,然後相同字元長度用規則去匹配,同樣不同字元長度也是如此。函式如下 int comparetwowo...
Leetcode刷題之括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...
leetcode刷題之堆
今天終於開啟的第二個專題的刷題之旅堆,不過第乙個專題棧還有乙個小問題沒解決就是利用遞減棧去解決接雨水的問題,雖然那道題我用動態規劃的問題解決出來了,我記得看到過一道面試題,問棧和堆有什麼區別。通過搜尋網上的資料總結如下。棧 stack 由系統分配記憶體,速度較快,但是自己無法掌握。堆 一般用兩種方法...