題意是讓你求乙個最小的n, 使得n!有m個0,n的階乘中2的因子是遠多於5的因子的個數, 因此我們統計出5的個數就知道其後面有幾個0,對於乙個數mid, mid!中5的因子的個數為mid/5 + mid/25 + mid/5^3 + ... 可以發現mid越大mid!中的5的個數越多, 因此我們可以二分答案, **如下:
#include #include#include
#include
using
namespace
std;
typedef
long
long
ll;int
m;int check(ll mid) //
mid 的階乘中5的個數
return
res;
}int
main()
else
if(tp > m) r = mid - 1
;
else l = mid + 1
; }
if(res == -1
) cout
<<"
no solution\n";
else
cout
}return0;
}
階乘因式分解 求階乘後某因子個數
給定兩個數m,n 求m 分解質因數後因子n的個數。這道題涉及到了大數問題,如果相乘直接求的話會超出資料型別的範圍。下面給出一種效率比較高的演算法,我們一步一步來。m 1 2 3 m 2 m 1 m 可以表示成所有和n倍數有關的乘積再乘以其他和n沒有關係的 n 2n 3n kn ohter other...
找乙個數的因子個數,因子和
1.所有因子個數 如果乙個數是因數,就不斷除這個數,儲存這個因子次方的數 temp 運用所有因子個數計算公式 見上圖 儲存因子個數的 ans不斷乘 temp 1 注意 當最後,在 x 不斷除因數得到的值有兩種情況 x 1,這說明 x 沒有其他因子了。x 1,這時 x 為其乙個素數因子 且這個因子大於...
算n因子的個數
這種題目以前就曾經做過,但是這次在做又忘了怎麼寫,在這裡做個總結,任意乙個數n都可以表示成p1 n1 p2 n2 p3 n3.p1,p2.是n的素因子,n1,n2是p1,p2的個數 n因子的個數就num n1 1 n2 1 所以我們在算因子個數的時候,就要先篩素數,篩素數的方法有很多種,效率也都不一...