n!素因子分解中素數p的冪為 [n/p]+[n/(p^2)]+[n/(p^3)]+……
nefu 118 傳送門
從輸入中讀取乙個數n,求出n!中末尾0的個數。
輸入有若干行。第一行上有乙個整數m,指明接下來的數字的個數。然後是m行,每一行包含乙個確定的正整數n,1<=n<=1000000000。
對輸入行中的每乙個資料n,輸出一行,其內容是n!中末尾0的個數。
33100
1024
024253
對於任意乙個正整數 若對其進行因式分解 那麼其末尾的0必可以分解為2*5
在這裡 每乙個0 必然和乙個因子5相對應
但 乙個數的因式分解中因子5不一定對應著乙個0 因為還需要乙個因子2
而對於n! 在因式分解中 2的因子個數要大於5的因子個數
所以這題只要求出5的冪就可以了
#include #include #include #include #include #include #include #include #include #define mem(a,x) memset(a,x,sizeof a)
#define eps 1e-8
#define mod 10009
#define maxn 10010
#define maxm 100010
#define inf 99999999
#define ll __int64
#define bug cout<<"here"<9)
print(a/10);
putchar(a%10+'0');
}int main()
printf("%d\n",sum);
}return 0;
}
nefu 119
傳送門
小明的爸爸從外面旅遊回來給她帶來了乙個禮物,小明高興地跑回自己的房間,拆開一看是乙個很大棋盤(非常大),小明有所失望。不過沒過幾天發現了大棋盤的好玩之處。從起點(0,0)走到終點(n,n)的非降路徑數是c(2n,n),現在小明隨機取出1個素數p, 他想知道c(2n,n)恰好被p整除多少次?小明想了很長時間都沒想出來,現在想請你幫助小明解決這個問題,對於你來說應該不難吧!
有多組測試資料。第一行是乙個正整數t,表示測試資料的組數。接下來每組2個數分別是n和p的值,這裡1<=n,p<=1000000000。
對於每組測試資料,輸出一行,給出c(2n,n)被素數p整除的次數,當整除不了的時候,次數為0。
22 22 3
11
#include #include #include #include #include #include #include #include #include #define mem(a,x) memset(a,x,sizeof a)
#define eps 1e-8
#define mod 10009
#define maxn 10010
#define maxm 100010
#define inf 99999999
#define ll __int64
#define bug cout<<"here"<9)
print(a/10);
putchar(a%10+'0');
}int main()
printf("%d\n",sum);
}return 0;
}
大素數測試和大數素因子分解
小黃書第 章p82頁根據合數的拉賓 公尺勒測試可得到素數的必要條件。參考資料。以poj1811 prime test 為例。include include include includeusing namespace std typedef long long ll const int s 20 l...
N 分解素因子及若干問題
將n!表示成 n p1 t1 p2 t2 pi ti pk tk 其中p1,p2 pk是素數,1顯然很容易通過素數篩選求出pi,因為1我們先來看一下對於2這個素因子,把n!分成兩部分,即奇偶兩部分 假設n是偶數 n!1 2 3 4 5 n 2 4 6 1 3 5 因為有n 2個偶數,所以偶數部分可以...
數論 素數篩選法與整數的素因子分解
篩選法 求出n以內的素數,最快的應該是篩選法。篩選法的思路是 要求10000以內的素數,把1 10000都列出來,1不是素數,劃掉 2是素數,所有2的倍數都不是素數,劃掉 取出下乙個倖存的數,劃掉它的所有倍數 直到所有素數找完為止。這種做法的空間複雜度是o n 時間複雜度o n logn const...