Toj 3990. I guess the gift is a bag! II

来源:互联网 发布:北京服装定制 知乎 编辑:程序博客网 时间:2024/06/03 00:29

题目连接: http://acm.tju.edu.cn/toj/showp3990.html

解法:直接要我们求欧拉函数;
这里用了狂斌的模板。
求快速求单个欧拉函数。

#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;typedef long long ll;int main(){  //freopen("F:\\123.txt","r",stdin);   ll n;    while(scanf("%lld",&n)!=EOF){       if(n==0) {         break;        }       ll ans=n; //假设所有都是质因数       for(ll i=2;i*i<=n;i++){         if(n%i==0){              ans-=ans/i; // 很巧妙的关系// 比如n为24能,被2整除,数量就少了12,分别是 //2,4,6,8,10,12,14,16,18,20,22,24//                       while(n%i==0) // 把能整除的全删了              n/=i;            }       }       if(n>1) ans-=ans/n;       printf("%lld\n",ans);        }  return 0;}
0 0
原创粉丝点击