HDOJ 1286 找新朋友

2024-05-05 12:48
文章标签 朋友 hdoj 1286

本文主要是介绍HDOJ 1286 找新朋友,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286

题目:

找新朋友

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7213    Accepted Submission(s): 3759


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

解题思路:

题意:求前n-1个数中与n互质的数。最容易想到的做法就是,暴力,将前n-1个数枚举一遍,用辗转相除法来判断最大公约数是否为1,但是这样做会超时。这个题目正确的做法应该是欧拉方程,φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数,φ(x)表示前x-1个数中与x互质的数的个数,例如φ(8) = 8 * (1 - 1/2)。这里,我们可以进行优化,用素数筛选法将质数算出来,利用素数表求x的质因子。


代码:

#include <cstdio>
#include <cstring>const int MAXN = 32770;
int num = 0, prime[MAXN];
bool isprime[MAXN];int fun(int n)
{int ret = n;for(int i = 0; i < num && prime[i] <= n; i++){if(0 == n % prime[i]){ret = ret - ret / prime[i];}}return ret;
}int main()
{memset(isprime, true, sizeof(isprime));for(int i = 2; i < MAXN; i++){if(isprime[i]) prime[num++] = i;for(int j = 0; j < num && i * prime[j] < MAXN; j++){isprime[i * prime[j]] = false;if(0 == i % prime[j]) break;}}int t, n;scanf("%d", &t);while(t--){scanf("%d", &n);printf("%d\n", fun(n));}return 0;
}



这篇关于HDOJ 1286 找新朋友的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961762

相关文章

菲律宾诈骗,请各位华人朋友警惕各类诈骗。

骗子招聘类型:程序开发、客服、财务、销售总管、打字员等 如果有人用高薪、好的工作环境来你出国工作。要小心注意!因为这些骗子是成群结伴的! 只要你进入一个菲律宾的群,不管什么类型的群都有这些骗子团伙。基本上是他们控制的! 天天在群里有工作的信息,工作信息都是非常诱惑人的。例如招“打字员”、“客服”、“程序员”……各种信息都有。只要你提交简历了,他会根据你的简历判断你这个人如何。所谓的心理战嘛!

SDUT2779_找朋友(BFS裸二维)

找朋友 Time Limit: 1000MS Memory limit: 65536K 题目描述 X,作为户外运动的忠实爱好者,总是不想呆在家里。现在,他想把死宅Y从家里拉出来。问从X的家到Y的家的最短时间是多少。 为了简化问题,我们把地图抽象为n*m的矩阵,行编号从上到下为1 到 n,列编号从左到右为1 到 m。矩阵中’X’表示X所在的初始坐标,’Y’表示Y的位置 ,

献给正在学习IT专业的朋友们

1.首先请你热爱这个专业。只有这样,你才会从抽象的理论中找到实实在在的快乐。如果 你不热爱她,或者只因为这是个热门专业,那么极力要求你放弃这个专业,因为计算机是 一把双刃剑,学好了你会飞黄腾达,学不好你毕业后会极其痛苦,高不成低不就,没有发 展潜力,如同学英语专业的人到了美国一样。 2.不要用功利眼光对待这个学科,这绝对不是点点鼠标就能挣钱的专业。不要去想做

hdoj 2371 decoded string. Decode the Strings

http://acm.hdu.edu.cn/showproblem.php?pid=2371 题意:给出编码的原则,给一个字符串,输出该字符串经过m次解码后的字符串。 啊啊啊啊。。。。无耻的看错题意了,以为给出字符串输出经过m次解码的后的字符串,样例死活过不了,赛后才发现问的是“decoded string”. 即解码后的字符串。。 思路:对于 5 3 2 3 1 5 4 helol

mapreduce '找共同朋友',面试题

mapred找共同朋友,数据格式如下: [quote] A B C D E F B A C D E C A B E D A B E E A B C D F A [/quote] 第一字母表示本人,其他是他的朋友,找出有共同朋友的人,和共同朋友是谁 答案如下: import java.io.IOException;import java.util.S

DFS——找朋友

找朋友 Time Limit: 1000MS Memory limit: 65536K 题目描述 X,作为户外运动的忠实爱好者,总是不想呆在家里。现在,他想把死宅Y从家里拉出来。问从X的家到Y的家的最短时间是多少。 为了简化问题,我们把地图抽象为n*m的矩阵,行编号从上到下为1 到 n,列编号从左到右为1 到 m。矩阵中’X’表示X所在的初始坐标,’Y’表示Y

HDOJ 1874 畅通工程续——结构体模拟邻接链表的SPFA算法

Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。 现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。   Input 本题目包含多组数据,请处理到文

九度OJ-1435-迷瘴(HDOJ-2570)

题目地址:点击打开链接 题目描述: 通过悬崖的yifenfei,又面临着幽谷的考验—— 幽谷周围瘴气弥漫,静的可怕,隐约可见地上堆满了骷髅。由于此处长年不见天日,导致空气中布满了毒素,一旦吸入体内,便会全身溃烂而死。 幸好yifenfei早有防备,提前备好了解药材料(各种浓度的万能药水)。现在只需按照配置成不同比例的浓度。 现已知yifenfei随身携带有n种浓度的万能药水,体积V都相

请不要做浮躁的人——转给即将上路的程序员朋友

最近半年多来收到不少网上留言和邮件询问程序代码问题,我个人比较喜欢讲思路然后再指定一些参考网址或者文章,不过似乎太多初学者不太领情,丝毫不顾自己 薄弱的基础,只求代码,别的什么也不顾,说实在话本人工作比较忙,有时候确实帮每个问问题的人写代码实在是写不过来。曾有过写点学习方法或者学习心态的文 章,但也未实现,今天重温这篇文章之后转载下来,希望给大家带来帮助。 ===========

uniapp微信小程序分享给朋友或者分享朋友圈

methods:{// 分享到朋友圈onShareTimeline: function(res) {return {title: "彩云驿",imageUrl: "http://121.40.40.95:8183/static/img/logoF.4aa4b748.png"};},// 首页 分享 可以分享整个小程序onShareAppMessage() {return {t