hdu1286 找新朋友 (同因子个数)

找新朋友

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

Total Submission(s): 9182    Accepted Submission(s): 4847

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

Author

SmallBeer(CML)

Source

杭电ACM集训队训练赛(VII)

Recommend

lcy   |   We have carefully selected several similar problems for you:  1215 1406 1164 1787 1211

Statistic | Submit | Discuss | Note

发现自己还是太嫩了 看到这种数据总想这打表。没有发现测试组数没有N大。。结果TLE

不用打表还是挺快的。。也可以用欧拉函数做

根据因子判断:

#include <stdio.h>
#include <math.h>
#include <string.h>
int flag[32770];
int main()
{
	int ncase;
	scanf("%d",&ncase);
	while(ncase--)
	{
		int n;
		scanf("%d",&n);
		memset(flag,0,sizeof(flag));
		for(int i=2;i<n;i++)
		if(n%i==0)
		{
			for(int q=1;q*i<n;q++)
			flag[q*i]=1;
		}
		int sum=0;
		for(int i=1;i<n;i++)
		if(!flag[i])
		sum++;
		printf("%d\n",sum);
	}
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-23 12:40:29

hdu1286 找新朋友 (同因子个数)的相关文章

HDU1286 找新朋友

这个问题简单暴力的话会TLE,在这里我使用了筛法. 1 #include <cstdio> 2 #include <cstring> 3 #define MAXN 36000 4 int m[MAXN]; 5 bool f[MAXN]; 6 int solve(int n){ 7 if(m[n]) return m[n]; 8 int i,j,ans=1; 9 memset(f,true,sizeof(f)); 10 for(i=2;i<n;++i){ 11 if(f[i])

hdu-1286 找新朋友(欧拉函数,水题)

题目链接: 找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10120    Accepted Submission(s): 5344 Problem Description 新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有

hdu1286(找新朋友)

. #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; int main() { int T,temp,ans,n; cin>>T; while(T--) { cin>>n; temp=n; ans=n; for(int i=2; i*i<=n; i++) { if(n%i==0) {

hdu1286找新朋友 欧拉函数模板题

#include<cstdio> #include<cstring> #include<iostream> using namespace std ; int Euler(int n) { int rea = n ; for(int i = 2;i*i <= n;i++) { if(n%i == 0) rea -= rea/i ; while(n%i == 0) n/=i ; } if(n>1) rea-=rea/n ; return rea ; } int

(hdu step 2.1.6)找新朋友(欧拉函数的简单使用:求与n互质的元素的个数)

题目: 找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2788 Accepted Submission(s): 1307   Problem Description 新年快到了,"猪头帮协会"准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大

hdu_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): 10969    Accepted Submission(s): 5818 Problem Description 新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人

找新朋友(欧拉函数)

找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8976    Accepted Submission(s): 4736传送门 Problem Description 新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的

hduoj 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): 8694 Accepted Submission(s): 4592 Problem Description 新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其

hdoj 1286 找新朋友 【数论之欧拉函数】

找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7912    Accepted Submission(s): 4157 Problem Description 新年快到了,"猪头帮协会"准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大