40分求助!调了好久了!
  • 板块P1593 因子和
  • 楼主whileAK
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/7/25 19:07
  • 上次更新2023/11/3 07:40:59
查看原帖
40分求助!调了好久了!
817925
whileAK楼主2023/7/25 19:07

刚刚学逆元的蒟蒻~WA了前十个点(悲)或者谁能给个#1的数据也行

#include<bits/stdc++.h>
using namespace std;
long long a,b,p[10010],c[10010]={},m=0,mod=9901,up,down,sum=1;
void break_out_a(){
	for(long long i(2);i*i<=a;++i){
		if(a%i==0)p[++m]=i;
		while(a%i==0)a/=i,++c[m];
	}
	if(a>1)p[++m]=a,c[m]=1;
}
long long quick_mi(long long t,long long n){//t^n
	long long ans=1;
	for(;n;n>>=1){
		if(n&1)ans=ans*t%mod;
		t=t*t%mod;
	}
	return ans;
}
int main(){
	scanf("%lld%lld",&a,&b);
	if(a==0){
		printf("0\n");
		return 0;
	}
	break_out_a();
	for(long long i(1);i<=m;++i){
		c[i]=(c[i]*b+1)%mod;
		if((p[i]-1)%mod==0){ 
			sum=c[i]*sum%mod;
			continue;
		}
		up=quick_mi(p[i],c[i]);
		up=(up-1+mod)%mod;
		down=quick_mi(p[i]-1,mod-2);
		sum=sum*up%mod*down%mod;
	} 
	printf("%lld",(sum%mod+mod)%mod);
	return 0;
}```
2023/7/25 19:07
加载中...