首页 > 其他 > 详细

P4980 【模板】Pólya 定理

时间:2021-06-02 21:31:32      阅读:34      评论:0      收藏:0      [点我收藏+]

【题意】

技术分享图片

【分析】

技术分享图片

 

 

【代码】

#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
#define fi first
#define se second
#define lson now<<1
#define rson now<<1|1
typedef long long ll;
const int mod=1e9+7;
int qpow(int a,int b)
{
    int res=1;
    while(b)
    {
        if(b&1) res=1LL*res*a%mod;
        a=1LL*a*a%mod;
        b>>=1;
    }
    return res;
}
int n;
int phi(int x)
{
    int ans=x;
    for(int i=2;i<=(int)sqrt(x);i++)
    {
        if(x%i) continue;
        ans=ans-ans/i;
        while(x%i==0) x/=i;
    }
    if(x!=1) ans=ans-ans/x;
    return ans;
}
int main()
{
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
    int T; scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        int cnt=sqrt(n);
        int ans=0;
        for(int i=1;i<=cnt;i++)
        {
            if(n%i) continue;
            int p1=phi(i),f1=qpow(n,n/i);
            f1=1LL*f1*p1%mod;
            ans=(ans+f1)%mod;
            if(i*i!=n)
            {
                int p2=phi(n/i),f2=qpow(n,i);
                f2=1LL*f2*p2%mod;
                ans=(ans+f2)%mod;
            }
        }
        printf("%d\n",1LL*qpow(n,mod-2)*ans%mod);
    }
    return 0;
}

 

P4980 【模板】Pólya 定理

原文:https://www.cnblogs.com/andylnx/p/14842567.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!