博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU1286 找新朋友
阅读量:4992 次
发布时间:2019-06-12

本文共 1164 字,大约阅读时间需要 3 分钟。

题目链接:

找新朋友

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 14912    Accepted Submission(s): 7939
 

Problem Description

新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员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

思路:一眼看过去,以为是筛选素数,后来发现不是,然后就用gcd暴力跑(TLE)。然后一直找gcd和素数筛选后的关系,最后翻书看数论,突然看到了欧拉函数,想到了欧拉函数就是这个功能。

AC代码:

#include 
#include
#include
#include
using namespace std;long long eular(long long n)//欧拉函数板子 { long long ans = n; for(int i = 2;i*i <= n;i++) { if(n % i == 0)//第一个素因子 { ans -= ans/i; while(n % i == 0)//约去因子 n /= i; } } if(n > 1)ans -= ans/n; return ans;}int main(){ int n, x; scanf("%d", &n); while(n--) { scanf("%d", &x); int ret = eular(x); printf("%d\n",ret); } return 0;}

 

转载于:https://www.cnblogs.com/ACMerszl/p/9572960.html

你可能感兴趣的文章
AwSnap:让全版本(Windows、iOS、Android)Chrome浏览器崩溃的有趣漏洞
查看>>
线段树合并学习笔记
查看>>
AndroidAutoLayout
查看>>
样本不均衡下的分类损失函数
查看>>
node启动服务后,窗口不能关闭。pm2了解一下
查看>>
vsCode 改变主题
查看>>
【vijos】【树形dp】佳佳的魔法药水
查看>>
聚合新闻头条
查看>>
Ubuntu 关闭锁屏界面的 on-screen keyboard
查看>>
凸优化学习笔记
查看>>
使用ehcache-spring-annotations开启ehcache的注解功能
查看>>
Charles设置HTTPS抓包
查看>>
NGUI出现Shader wants normals, but the mesh UIAtlas doesn&#39;t have them
查看>>
Boost.Asio c++ 网络编程翻译(14)
查看>>
Codeforces Round #306 (Div. 2) D.E. 解题报告
查看>>
uva 1557 - Calendar Game(博弈)
查看>>
HDU1051 Wooden Sticks 【贪婪】
查看>>
十大经典数据挖掘算法
查看>>
Rhythmbox乱码的解决的方法
查看>>
中纪委:抗震中官员临危退缩玩忽职守将被严处
查看>>