新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都是新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来。

Input第一行是测试数据的组数CN(Case number,1<CN<10000),接着有CN行正整数N(1<n<32768),表示会员人数。Output对于每一个N,输出一行新朋友的人数,这样共有CN行输出。 
Sample Input

2
25608
24027

Sample Output

7680
16016个人心得:找互质数,朴素算法会超时,在了解了容斥原理后,根据那个公式sum=n*(p1-1)(p2-1)...(pi-1)/p1*p2*p3...pi;p1到pi为n的素数因子。没学离散,容斥只是简单了解了下。看了还好,推导起来真的是一个头大!果断送人头出去,不玩了...绝望附上代码吧
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<utility>
 6 #include<queue>
 7 #include<set>
 8 using namespace std;
 9 #define k 100003
10 int n;
11 long long sum;
12 int x[10000];
13 int flag;
14 bool prime(int x)
15 {
16     if(x<2) return false;
17     for(int i=2;i<=sqrt(x);i++)
18         if(x%i==0) return false;
19     return true;
20
21
22 }
23 void getsum()
24 {
25     flag=1;
26     long long t1=1,t2=1;
27     for(int i=2;i<n;i++)
28         if(n%i==0&&prime(i)) x[flag++]=i;
29         if(flag==1) {sum=n-1;return;}
30     for(int i=1;i<flag;i++)
31     {
32         t1*=(x[i]-1);
33         t2*=x[i];
34     }
35     sum=n*t1/t2;
36
37 }
38 int main()
39 {
40    int t;
41    cin>>t;
42    while(t--)
43    {
44
45        sum=0;
46        cin>>n;
47        if(n==1) {cout<<"1"<<endl;continue;}
48        getsum();
49        cout<<sum<<endl;
50
51
52
53    }
54     return 0;
55
56
57 }

转载于:https://www.cnblogs.com/blvt/p/7273987.html

找新朋友(欧拉函数)相关推荐

  1. hdu 1286 找新朋友 欧拉函数模版题

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Des ...

  2. 洛谷P2158仪仗队(数学,观察找规律,欧拉函数)

    题目链接:https://www.luogu.org/problemnew/show/P2158 读完题被吓到了,这是什么东西. 总之,需要观察+找规律啊!观察可以发现,从第三行开始,第i行中当前直角 ...

  3. HDU 1286 找新朋友 (欧拉函数)

    找新朋友 http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=2&sectionid=1&problemid=8 T ...

  4. HDU1286 找新朋友【欧拉函数】

    找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...

  5. hdu 1286 找新朋友 (容斥原理 || 欧拉函数)

    Problem - 1286 用容斥原理做的代码: 1 #include <cstdio> 2 #include <iostream> 3 #include <algor ...

  6. 欧拉函数 euler

    O - 找新朋友 1.欧拉函数 euler() 在数论,对正整数n,欧拉函数是  少于或等于n的数中与n 互质 的数的数目. 互质:公约数只有 1 的两个整数,称为互质整数.即 最大的公约数也就是 1 ...

  7. 杭电1286找新朋友

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  8. BZOJ3884上帝与集合的正确用法-欧拉函数

    刚开始我想的是欧拉降幂,可是觉得复杂度还是挺高的就去找了一下题解. 思路大方向没有问题,仍然是使用欧拉函数降低指数然后递归处理.但是不是简单的使用欧拉降幂而是应该对模数p稍微处理一下.因为底数已经确定 ...

  9. LightOJ 1370 Bi-shoe and Phi-shoe(欧拉函数)

    题意:题目给出一个欧拉函数值F(X),让我们求>=这个函数值的最小数N,使得F(N) >= F(X); 分析:这个题目有两种做法.第一种,暴力打出欧拉函数表,然后将它调整成有序的,再建立一 ...

  10. HDOJ 1286 HDU 1286 找新朋友 ACM 1286 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目描述:          http://acm.hdu.edu.cn/showproblem.php?pid=1286 ...

最新文章

  1. linux交换分区的优化-参数优化必选
  2. axios的简单使用
  3. 01_关于TensorFlow、什么是数据流图(Data Flow Graph)、TensorFlow的特征、谁可以使用Tensorflow、为啥Google要开源这个神器?
  4. 榴莲还有奶油、花生味 印尼出新品售价近7000人民币
  5. oracle sal01,oracle中 all any in的用法
  6. Python:绘图保存时出现空白图像的解决和如何保存图片
  7. sql:数据操作语言dml
  8. 基于lfslivecd-x86-6.3-r2145安装vnc和qemu
  9. Python 3.6+Django开发入门小案例(自动变化的问候)完整步骤
  10. [精华][推荐]CAS SSO 实现单点登录实例源码
  11. web项目中js加载慢问题解决思路
  12. springmvc重定向到另一个项目_SpringMVC结合Ajax、请求转发重定向、视图解析器
  13. JAVA DES加密解密代码范例
  14. android接入qq广告,QQ接入华为HMS 安卓生态迎巨变?
  15. 【建议收藏】2021年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂
  16. React + Ant Design Pro项目实现keep-alive页签
  17. fanyibishe
  18. 想要定制个性化语音?来试试这几个配音软件
  19. 网络直播对网络的要求有多高
  20. Uipath IIF判断使用

热门文章

  1. AI 质检学习报告——实践篇——第三步:python利用OpenCV打开摄像头截图后实现图片识字
  2. 【Python3】Tensorflow_Fasterrcnn训练自己数据集,Keras_Yolov3_GPU训练自己数据集
  3. 【Linux】一步一步学Linux——pstree命令(120)
  4. linux的svn同步文件在哪里,linux svn服务器同步文件在哪里
  5. php image处理,PHP图像处理之imagecreate、imagedestroy函数介绍
  6. Java协作开发,Java开发学习笔记之八:servlet之间的协作
  7. idea 自动添加doc_interllij idea生成javadoc
  8. 正则表达式加golang爬虫爬取经典案例豆瓣top250
  9. C专家编程—分析signal函数的原型声明{void (*signal(int sig,void (*func)(int)))(int)}(2)
  10. 6 Git 分支 - 变基