A题 贺老师的粉丝
待补题
B题 贺老师的银行卡
待解释,先扔代码上来~
#include <cstdio> #include <algorithm> #include <cstring> typedef long long ll; const ll MOD=1e9+7; ll n,GCD,LCM,k[1000005],tot,Out=1; ll QuickPow(ll A,ll n){ ll ans = 1; while(n){ if(n&1) ans = A*ans%MOD; A = A*A%MOD; n>>=1; } return ans%MOD; } void factor(){ ll QAQ=LCM; for(ll i=2;i*i<=QAQ;i++){ if(LCM%i==0){ tot++; while(LCM%i==0){ LCM/=i; k[tot]++; } } } if(LCM!=1) k[++tot]=1; } int main(){ scanf("%lld%lld%lld",&n,&GCD,&LCM); if(LCM%GCD!=0){ printf("0"); return 0; } else { LCM/=GCD; } factor(); for(ll i=1;i<=tot;i++){ if(k[i]){ //printf("%lld\n",k[i]); Out=(Out*(QuickPow(k[i]+1,n)%MOD-QuickPow(k[i],n)%MOD-QuickPow(k[i],n)%MOD+QuickPow(k[i]-1,n)%MOD)%MOD)%MOD; while(Out<0) Out+=MOD; //printf("i:%lld %lld\n",i,Out); } } printf("%lld\n",Out%MOD); return 0; }
C题 贺老师含树
待补