SAC E 1 一道中檔題 Factorial

2022-05-11 11:34:52 字數 1958 閱讀 5781

sol君(爐石主播)和sol菌(完美資訊教室講師)是好朋友。

sol君很喜歡階乘。而sol菌很喜歡研究進製。

這一天,sol君跟sol菌炫技,隨口算出了n的階乘。

sol菌表示不服,立刻就要算這個數在k進製表示下末尾0的個數。

但是sol菌太菜了於是請你幫忙。

輸入格式:

本題包含多組資料。

每組輸入僅包含一行:兩個整數n,k。

輸出格式:

對於每組輸入,輸出乙個整數:n!在k進製下字尾0的個數。

輸入樣例#1:

10 40

輸出樣例#1:

2

對於20%的資料,n <= 1000000, k = 10

對於另外20%的資料,n <= 20, k <= 36

對於60%的資料,n <= 10^15,k <= 10^12

對於100%的資料,n <= 10^18,k <= 10^16

鬼題

如果k<=10^12是可以穩過的

k<=10^16就只剩pollard rho(超出提高組模擬範圍了)或玄學優化

首先k進製最後x位為0表示n!能整除k數x次(顯然而重要的條件)

於是問題變為了n!含有多少個k的因子

k為合數不好處理,分解質因數k=p1^a1*p2^a2*p3^a3.....

對於求n!含k的數量,轉變為求p1....的因子數,在除以a1...,取最小值

給出2種方法

1.

n!=(1k*2k*3k*4k*5k...mk)*a

=k^m*m!*a

a為不含k的積,m=n/k

這樣就可以log遞迴求解

2.

含有乙個k:n/k

含有二個k:n/k/k

.....

含有p個k:n/(k^p)

把它們相加

1 #include2 #include3 #include4 #include5 #include6

#define count count

7using

namespace

std;

8long

long prime[100001],mi[100001

],tot;

9long

long n,k,cnt,ans=9223372036854775807

,s;10

long

long count(long

long p,long

long k,long

long

mod)

1119

return

ss;20}21

intmain()

22 37 mi[tot]=cnt;38}

39if (k==1) break;40

}41if (k!=1

) 42

46for (i=1;i<=tot;i++)

4751 printf("

%lld\n

",ans);52}

53 }

SAC E 1 一道中檔題 Factorial

sol君 爐石主播 和sol菌 完美資訊教室講師 是好朋友。sol君很喜歡階乘。而sol菌很喜歡研究進製。這一天,sol君跟sol菌炫技,隨口算出了n的階乘。sol菌表示不服,立刻就要算這個數在k進製表示下末尾0的個數。但是sol菌太菜了於是請你幫忙。輸入格式 每組輸入僅包含一行 兩個整數n,k。輸...

SAC E 1 一道難題 Tree

冴月麟和魏瀟承是好朋友。冴月麟為了守護幻想鄉,而製造了幻想鄉的倒影,將真實的幻想鄉封印了。任何人都無法進入真實的幻想鄉了,但是她給前來救她的魏瀟承留了乙個線索。她設定了一棵樹 有根 樹的每一條邊上具有割掉該邊的代價。魏瀟承需要計算出割開這棵樹的最小代價,這就是冴月麟和魏瀟承約定的小秘密。幫幫魏瀟承吧...

SAC E 1 一道難題 Tree(樹形DP)

冴月麟和魏瀟承是好朋友。冴月麟為了守護幻想鄉,而製造了幻想鄉的倒影,將真實的幻想鄉封印了。任何人都無法進入真實的幻想鄉了,但是她給前來救她的魏瀟承留了乙個線索。她設定了一棵樹 有根 樹的每一條邊上具有割掉該邊的代價。魏瀟承需要計算出割開這棵樹的最小代價,這就是冴月麟和魏瀟承約定的小秘密。幫幫魏瀟承吧...