萌新求调
查看原帖
萌新求调
401052
Endline楼主2022/2/10 18:41

RT,全WA了

#include<bits/stdc++.h>
#define MAXN 1000000002
#define rg register
#define int long long
using namespace std;
inline int read()
{
	int f=1,w=0;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9')w=w*10+ch-'0',ch=getchar();
	return f*w;
}
int T,n,ans;
const int mod=1e9+7;
inline int poww(int x,int k)
{
	int base=x,res=1;
	for(;k;(base*=base)%=mod,k>>=1)
		if(k&1)(res*=base)%=mod;
	return res%mod;
}
inline int phi(int x)
{
	int res=x;
	for(rg int i=2;i*i<=x;i++)
	{
		if(x%i)continue;
		res-=res/i;
		while(!x%i)x/=i;
	}
	if(x!=1)res-=res/x;
	return res;
}
signed main()
{
	T=read();
	while(T--)
	{
		n=read(),ans=0;
		for(rg int i=1;i*i<=n;i++)
		{
			if(n%i)continue;
			int x=phi(i),y=poww(n,n/i);
			(ans+=(x*y)%mod)%=mod;
			if(i*i!=n)
			{
				int xx=phi(n/i),yy=poww(n,i);
				(ans+=(xx*yy)%mod)%=mod;
			}
		}
		printf("%d\n",ans*poww(n,mod-2)%mod);
	}
	return 0;
}


2022/2/10 18:41
加载中...