題意求a^b的所有約數(即因子)之和,並對其取模 9901再輸出。用到下面三個數學公式和定理
整數的唯一分解定理:
任意正整數都有且只有一種方式寫出其素因子的乘積表示式。
a=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn) 其中pi均為素數
約數和公式:
對於已經分解的整數a=(p1^k1)*(p2^k2)*(p3^k3)*....*(pn^kn)
有a的所有因子之和為
s = (1+p1+p1^2+p1^3+...p1^k1) * (1+p2+p2^2+p2^3+….p2^k2) * (1+p3+ p3^3+…+ p3^k3) * .... * (1+pn+pn^2+pn^3+...pn^kn)
同餘模公式:
(a+b)%m=(a%m+b%m)%m
(a*b)%m=(a%m*b%m)%m
**如下
#include
#include
#define size 10000
#define mod 9901
__int64 sum(__int64 p,__int64 n);
__int64 power(__int64 p,__int64 n);
__int64 sum(__int64 p,__int64 n)
__int64 power(__int64 p,__int64 n)
return sq;
}void main()
k++;
}if(i==2)
i++;
else
i+=2;
}if(a!=1)
ans=1;
for(i=0;ians=(ans*(sum(p[i],n[i]*b)%mod))%mod;
printf("%i64d\n",ans);}}
Poj1845 Sumdiv 解題報告
真沒想到!其實我們可以先將 a b 分解成質因數的 因為 a b 的因數肯定是 a b 的質因數在一定的條件下相乘而成的 然後組合一下 h ovny 走開!別誤導別人!來一波公式 所有因數的和 pi 讀作pi,是 pi 的大寫,表示累乘 sigma 讀作sigma,是 sigma 的大寫,表示累加 ...
poj解題報告 1328
不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...
poj解題報告 2586
這題我是用的貪心演算法,其實不用也可以,列舉也能解決,因為情況不多。因為是每連續5個月必有虧損,而一年只有1 5,2 6,3 7,4 8 8 12共8種情況。現在設盈餘為s,虧損為d,可列出以下幾種情況。ssssdssssdss 4ssssddsssddss 3s 2d ssdddssdddss 2...