poj1845sumdiv 发表于 2019-04-18 | 分类于 数论 poj1845 sumdiv 题意求$A^B$的所有约束之和mod9901. 思路 A可以写成 然后 而等比数列的公式可以写成 这样问题就得以解决。 代码1234567891011121314151617181920212223242526272829303132333435363738394041#include<iostream>using namespace std;const int mod=9901;int a,b;int p[20],c[20];int m=0;void divide(int x){ for(int i=2;i*i<=x;i++){ if(x%i==0){ p[++m]=i; c[m]=0; while(x%i==0) x/=i,c[m]++; } } if(x>1) p[++m]=x,c[m]=1;}long long ksm(long long a,long long b) { int c = 1; while(b){ if(b&1) c=c*a%mod; a=a*a%mod; b>>=1; } return c;}int main(){ cin>>a>>b; long long ans=1; divide(a); for(int i=1;i<=m;i++){ if((p[i]-1)%mod==0){ ans=(b*c[i]+1)%mod*ans%mod; } else{ long long x=(ksm(p[i],b*c[i]+1)-1+mod)%mod; x*=ksm(p[i]-1,mod-2)%mod; ans=ans*x%mod; } } cout<<ans<<endl;} 打赏 微信支付 支付宝