Poj1845 Sumdiv 解題報告

2022-04-30 18:21:06 字數 1262 閱讀 8750

真沒想到!

其實我們可以先將\(a^b\)分解成質因數

因為\(a^b\)的因數肯定是\(a^b\)的質因數在一定的條件下相乘而成的

然後組合一下

h^ovny:走開!別誤導別人!

來一波公式:

所有因數的和:

\(\pi\) :讀作pi,是\(\pi\)的大寫,表示累乘

\(\sigma\) :讀作sigma,是\(\sigma\)的大寫,表示累加

現在的問題就變成了如何求:

展開來寫乘:

k奇數時:

\(f(k)=1+p+p^2+p^3+…+p^k\)

​ \(= (1+p+…+p^)+(p^+…+p^k)\)

​ \(= (1+p+…+p^)+p^*(1+p+…+p^)\)

​ \(= (p^+1)*(1+p+…+p^)\)

k偶數

\(f(k)=f(k-1)*p^k\)

然後配合快速冪%9901

人已憔悴

code:

#include#include#define ll long long

#define mod 9901

using namespace std;

ll a[30];

ll s[30];

bool b[10010];

ll n,m;

int t;

ll ans=1;

int read()

return s;

}ll quickpow(ll a,ll b)

return res;

}ll work(ll p,ll k)

int main()

} for(i=3;i*i<=n;i+=2)

if(!b[i])

}j=i+i;

while(j*j<=n)

}if(n>1)

for(i=1;i<=t;i++)

ans=(ans*work(a[i],s[i]*m))%mod;

printf("%lld",ans);

return 0;

}

POJ1845 Sumdiv 數學?逆元?

當初寫過一篇分治的 題意 求a b的所有因子之和,並對其取模 9901再輸出 對於數a p1 c1 p2 c2 pn cn,它的所有約數之和為 1 p1 p1 2 p1 3 p1 c1 b 1 p2 p2 2 p2 3 p2 c2 b 1 pn pn 2 pn 3 pn cn b 注意到約數之和的每...

poj 1845 Sumdiv ,質因子分解

題意 求a b的所有約數之和。題解 a p1 a1 p2 a2 pn an.a b的所有約數之和為 sum 1 p1 p1 2 p1 a1 b 1 p2 p2 2 p2 a2 b 1 pn pn 2 pn an b 用遞迴二分求等比數列1 pi pi 2 pi 3 pi n 1 若n為奇數,一共有偶...

POJ1845Sumdiv(逆元or等比數列求和)

附上acdreamer的講解 題目 題意 給定兩個正整數9901取餘後的值。分析 很容易知道,先把 的所有因子和的表示式如下 所以我們有兩種做法。第一種做法是二分求等比數列之和。如果採用等比數列首項為一次項的計算方法,則需要另外加上1 include include includeusing nam...