杭电acm 找新朋友

题目链接:

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

这道题目使用的筛法的思想去做:

输入一个数num,从2到num-1进行遍历,遇到能够被num整除的数,就将其划去,并将num范围内的所有具有该因子的数都划去,最后剩下的就是与num互质的数。

具体代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#define MAX 32768
using namespace std;
int a[MAX];
int main(){
	int cn;
	scanf("%d",&cn);
	while(cn--){
		int num;
		scanf("%d",&num);
		for(int i=0;i<num;i++){
			a[i]=0;
		}
		for(int i=2;i<num;i++){
			if(num%i==0){
				for(int j=i;j<num;j=j+i){
					a[j]=1;
				}
			}
		}

		int cnt=0;
		for(int i=1;i<num;i++){
			if(a[i]==0){
				cnt++;
			}
		}
		printf("%d\n",cnt);
	}
}
时间: 2024-11-16 13:35:30

杭电acm 找新朋友的相关文章

杭电ACM1286——找新朋友~欧拉函数的应用

欧拉函数 欧拉函数,对于正整数n,欧拉函数就是小于或者等于n的数中与n互质的数的数目. 通式为: F(x) = x * (1 - 1 / p1) * (1 - 1 / p2) * ....... * (1 - 1 / pn):p1,p2,p3.....pn为x的质因子.每一质因子只出现一次.即p1 ≠ p2 ≠ ....pn: 例如12 = 2 * 2 * 3:2只能算一次. 有了这个欧拉通式,便可以快速的求解这一题,该开始我是用普通的方法做的,很明显,超时了,一次输入的数很多个的时候,便容易超

杭电ACM 找循环节 std::ios::sync_with_stdio(false);

Problem Description As a unicorn, the ability of using magic is the distinguishing feature among other kind of pony. Being familiar with composition and decomposition is the fundamental course for a young unicorn. Twilight Sparkle is interested in th

找新朋友(杭电1286)

/*找新朋友 Problem Description 新年快到了,"猪头帮协会"准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都是新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来. Input 第一行是测试数据的组数CN(Case number,1<CN<10000),接着有CN行正整数N(1<n<32768),表示会员人数. Output 对于

(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有大

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有大

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY

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编号,其

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人

杭电ACM Java实现样例

若使用Java求解杭电ACM,答案提交必须注意两点: 1.类名一定得是Main,否则服务器无法编译: 2.必须用while进行输入判断. 以1000题测试题为例,代码如下: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); while(scan.hasNextInt()) { int a=scan.n