HDU 1406 完数【打表】

/*

题目大意:求解给定两个数之间的完数的数目

解题思路:打一个求一个数所有因子之和的表。

关键点:找出一个数的所有因子,注意给定你两个数的大小关系

解题人:lingnichong

解题时间:2014-08-28 10:25:16

解题体会:注意题意啊

*/

完数

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

Total Submission(s): 18355    Accepted Submission(s): 6774

Problem Description

完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3;28=1+2+4+7+14。

本题的任务是判断两个正整数之间完数的个数。

Input

输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1<num1,num2<10000) 。

Output

对于每组测试数据,请输出num1和num2之间(包括num1和num2)存在的完数个数。

Sample Input

2
2 5
5 7

Sample Output

0
1

Author

lcy

Source

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

#include<stdio.h>
int arr[10010]={0};
int  main()
{
	int n,x,y;
	int i,j,count;
	int t;
	for(i=1;i<=10000;i++)
	{
		for(j=1;j*i<=10000;j++)
			arr[i*j]+=i;
	}
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d%d",&x,&y);
		if(x>y)//题目没说x和y谁大谁小,要判断一下
		{t=x;x=y;y=t;}
		for(i=x,count=0;i<=y;i++)
		{
			if(arr[i]-i==i)
				count++;
		}
		printf("%d\n",count);
	}
	return 0;
}
时间: 2024-10-28 04:31:38

HDU 1406 完数【打表】的相关文章

hdu 1406 完数

Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3:28=1+2+4+7+14. 本题的任务是判断两个正整数之间完数的个数. Input 输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1<num1,num2<10000) . Output 对于每组测试数据,请输出num1和num2之间(包括num1和

HDOJ 1406 完数(打表,附讨论区出现的史上最牛逼打表,0ms)

 完数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 22197    Accepted Submission(s): 8115 Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3:28=1+2+4+7+14. 本题的任务是判

HDU 1406.完数【筛选法以及特殊方法】【7月27】

完数 看来我的心还是不够细啊,这对一个ACMer来说,太致命了! Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3:28=1+2+4+7+14. 本题的任务是判断两个正整数之间完数的个数. Input 输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1<num1,num2<10000) . Outpu

HDOJ(HDU) 1406 完数

Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3:28=1+2+4+7+14. 本题的任务是判断两个正整数之间完数的个数. Input 输入数据包含多行,第一行是一个正整数n,表示测试实例的个数,然后就是n个测试实例,每个实例占一行,由两个正整数num1和num2组成,(1 import java.util.Scanner; public class Main{ public static

hdoj 1406 完数

完数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 23233    Accepted Submission(s): 8456 Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3:28=1+2+4+7+14. 本题的任务是判断两个正

2014年百度之星程序设计大赛 - 初赛(第一轮) hdu Grids (卡特兰数 大数除法取余 扩展gcd)

题目链接 分析:打表以后就能发现时卡特兰数, 但是有除法取余. f[i] = f[i-1]*(4*i - 2)/(i+1); 看了一下网上的题解,照着题解写了下面的代码,不过还是不明白,为什么用扩展gcd, 不是用逆元吗.. 网上还有别人的解释,没看懂,贴一下: (a / b) % m = ( a % (m*b)) / b 笔者注:鉴于ACM题目特别喜欢M=1000000007,为质数: 当gcd(b,m) = 1, 有性质: (a/b)%m = (a*b^-1)%m, 其中b^-1是b模m的逆

HDU 2512 贝尔数

一卡通大冒险 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1356    Accepted Submission(s): 890 Problem Description 因为长期钻研算法, 无暇顾及个人问题,BUAA ACM/ICPC 训练小组的帅哥们大部分都是单身.某天,他们在机房商量一个绝妙的计划"一卡通大冒险".这个计

HDU 4952 Number Transformation 打表规律

点击打开链接 Number Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 495    Accepted Submission(s): 248 Problem Description Teacher Mai has an integer x. He does the following operation

hdu 不可摸数

不可摸数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8417    Accepted Submission(s): 2176 Problem Description s(n)是正整数n的真因子之和,即小于n且整除n的因子和.例如s(12)=1+2+3+4+6=16.如果任何 数m,s(m)都不等于n,则称n为不可摸数. Input