码迷,mamicode.com
首页 > 其他好文 > 详细

HDU_1406 完数

时间:2016-08-05 22:56:08      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

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
代码如下:
 1 #include <cstdio>
 2 #include <cmath>
 3 int pd(int num){
 4     int ll=0;
 5     for(int i=1;i<num;i++){
 6         if(num%i==0){
 7             ll+=i;
 8         }
 9     }
10     if(ll==num)
11        return 0;
12     else 
13        return 1; 
14 }
15 int main()
16 {
17     int n;
18     scanf("%d",&n);
19     while(n--){
20         int num1,num2;
21         scanf("%d %d",&num1,&num2);
22         if(num1>num2){
23             int temp;
24             temp=num1;
25             num1=num2;
26             num2=temp;
27         }
28         int ans=0;
29         for(int i=num1;i<=num2;i++){
30             if(pd(i)==0){
31                 ans++;
32             }
33         }
34         printf("%d\n",ans);
35     }
36     
37     return 0;
38 } 

 

思路解析:
          一定要读好题一定要读好题一定要读好题!重要的事情说三遍。本题最大的坑就是num1可以比num2大!注意到这一点本题就AC。
 

HDU_1406 完数

标签:

原文地址:http://www.cnblogs.com/xzt6/p/5742852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!