码迷,mamicode.com
首页 > 其他好文 > 详细

POJ - 3090 gcd水题

时间:2018-02-14 16:21:51      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:莫比乌斯反演   markdown   bool   ==   个数   int   span   body   continue   

大概题意就是求\(1 \le i,j \le n\)\(gcd(i,j) = 1\)的个数+2(对于0的特判)
正解应该是欧拉函数或者高逼格的莫比乌斯反演
但数据实在太水直接打表算了

/*H E A D*/
bool GCD[1002][1002];
inline int gcd(int a,int b){return b?gcd(b,a%b):a;}
int main(){
    rep(i,1,1000) rep(j,1,1000) GCD[i][j]=bool(gcd(i,j)==1);
    int T=read(),kase=0;
    while(T--){
        int n=read();
        if(n==1){
            printf("%d %d 3\n",++kase,n);
            continue;
        }
        int ans=0;
        rep(i,1,n) rep(j,1,n) ans+=GCD[i][j];
        ans+=2;
        printf("%d %d %d\n",++kase,n,ans);
    }
    return 0;
} 

POJ - 3090 gcd水题

标签:莫比乌斯反演   markdown   bool   ==   个数   int   span   body   continue   

原文地址:https://www.cnblogs.com/caturra/p/8448440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!