題目描述
給出乙個數k,求最小的n,使得n的階乘後面0的數量》=k。
例如k=1,
5的階乘 = 1*2*3*4*5 = 120,120後面有1個0。並且4的階乘後面沒有0,所以5是最小的結果。
輸入
乙個數k(1 <= k <= 10^9)
輸出
輸出最小的滿足條件的n。
輸入樣例1輸出樣例
5
又是一道二分答案題。
這次直接幹v2版本。(v1版通用)
先在前面說一下,這道題需要使用long long,否則會wa掉幾個值
這道題最先考慮的是如何判斷它末尾有幾個0。
沒錯,又是找規律
末尾0的構成要有2和5這兩個數
例如:10=2*5
100=4*5*5
因為2的倍數比5的倍數多得多
所以,我們只需要考慮5的倍數有幾個就可以知道末尾有幾個0。
(注意25這一類數,等於5*5,算是兩個5的倍數)
規律找出來了。
然後是二分
我們可以將5的倍數進行二分,也就是最後的答案。
如果這個二分的答案滿足k,就把二分的值調小
如果這個二分的答案不滿足k,就把這個值調大
bingo,問題解決!
先來看看check函式的**
1bool check(long
longx)8
if(num>=k)
9return1;
10else
11return0;
12 }
下面是整個題目的**
1 #include2 #include3 #include4 #include5 #include6#define inf 100000000
7using
namespace
std;
8long
longk;9
bool check(long
long
x)16
if(num>=k)
17return1;
18else
19return0;
20}21int
main()
2234 cout<35return0;
36 }
2652 階乘0的數量 V2
題目描述 給出乙個數k,求最小的n,使得n的階乘後面0的數量 k。例如k 1,5的階乘 1 2 3 4 5 120,120後面有1個0。並且4的階乘後面沒有0,所以5是最小的結果。輸入 乙個數k 1 k 10 9 輸出 輸出最小的滿足條件的n。輸入樣例 1輸出樣例 5 又是一道二分答案題。這次直接幹...
階乘後面0的數量
n的階乘後面有多少個0?6的階乘 1 2 3 4 5 6 720,720後面有1個0。收起乙個數n 1 n 10 9 輸出0的數量51有思路了,這個題並不難。寫它是因為網上很多題解,沒有把思想真正表達清楚,所以想寫乙份題解,談談我的看法。此類問題很顯然屬於數學問題,一定要找到其中的本質規律才能得到正...
51nod 3034 矩形的數量 V2
題目 乙個m乘n的方格圖,有多少種形狀不同的矩形。1x2和2x1算同一種。例如 4 3的方格中共有9種。1x1,1x2,1x3,2x2,2x3,3x3,4x1,4x2,4x3 輸入共一行 2個數m,n,對應方格圖的長寬 1 m,n 1e9 輸出輸出對應的矩形種類 mod 1e9 7。資料範圍 1 m...