求助,1~10的点wa,其余AC
  • 板块P1593 因子和
  • 楼主_QWQ_TAT_
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/4/13 10:32
  • 上次更新2024/4/13 12:12:21
查看原帖
求助,1~10的点wa,其余AC
1011907
_QWQ_TAT_楼主2024/4/13 10:32

rt

 #include <bits/stdc++.h>
using namespace std;
#define Xia_Qian return
#define AKIOI 0
typedef long long ll;
const int mod=9901;
 
ll a,b;
ll ans=1;
ll p[100005],k[100005],topp,topk;

ll qpow(ll a,ll b){
	ll ans=1;
	while (b){
		if (b&1) {
			ans=(ans*(a%mod))%mod;
		}
		b>>=1;a=(a*a)%mod;
	}
	return ans%mod;
}

int main(){
	cin>>a>>b;
	if (a==0){
		puts("0");
		Xia_Qian AKIOI;
	}if (b==0){
		puts("1");
		Xia_Qian AKIOI;
	}	//puts("!");
	ll x=a;
	for (int i=2;i*i<=a;i++){
		if (x%i==0){
			p[++topp]=i;
			while(x%i==0){
				k[topp]++;
				x/=i;
			}
			k[i]*=b;
		}
	}
	if (x>1){
		p[++topp]=x;
		k[topp]+=b;
//		cout<<k[topp]<<" ";
	}
	for (int i=1;i<=topp;i++){
		if (p[i]%mod==1){
			ans=ans*(k[i]+1)%mod;
		}else{
			ll x=(qpow(p[i],k[i]+1)-1+mod)%mod;
			ll y=qpow(p[i]-1,mod-2);
			ans=ans*x%mod*y%mod;		
		}

	}
	cout<<(ans+mod)%mod;
	Xia_Qian AKIOI;
}
		
2024/4/13 10:32
加载中...