34分求助!!!
  • 板块P1593 因子和
  • 楼主wuxiyi
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/12/10 17:28
  • 上次更新2023/10/26 23:54:19
查看原帖
34分求助!!!
751073
wuxiyi楼主2022/12/10 17:28
#include<iostream>
using namespace std;
long long n[10010][3]={0},cnt,ans=1,a,b;
void fenjie()
{
	for (long long i=2;i*i<=a;i++)
	{
		if (a%i==0)
		{
			cnt++;
			n[cnt][1]=i;
			n[cnt][2]=1;
			a/=i;
			while (a%i==0)
			{
				a/=i;
				n[cnt][2]++;
			}
		}
	}
	if (a>1)
	{
		cnt++;
		n[cnt][1]=a;
		n[cnt][2]=1;
	}
	for(long long i=1;i<=cnt;i++) 
	{
		n[i][2]*=b;
	}
}
long long qpow(long long a,long long b)
{
	long long ans=1;
	while (b>0)
	{
		if (b%2==1)
		{
			ans=(ans%9901)*(a%9901)%9901;
		}
		a=a*a%9901;
		b/=2;
	}
	return ans%9901;
}
long long sum(long long p,long long c)
{
	if (c==0)
	{
		return 1;
	}
	if (c%2==1)
	{
		return ((1+qpow(p,(c+1)/2))*sum(p,(c-1)/2))%9901;
	}
	else if (c%2==0)
	{
		return ((1+qpow(p,c/2))*sum(p,c/2)+qpow(p,c))%9901;
	}
}
int main()
{
	cin>>a>>b;
	if (a==0)
	{
		cout<<0;
		return 0;
	}
	fenjie();
	for (int i=1;i<=cnt;i++)
	{
		ans*=sum(n[i][1],n[i][2])%9901;
		ans%=9901;
	}
	cout<<ans;
	return 0;
}

???

2022/12/10 17:28
加载中...