(HDU)1046 -- 完数

题目链接:https://vjudge.net/problem/HDU-1406

注意是所有的因子之和,重复出现的因子不要累加(如果模拟了除法的话),另外给出的两个整数要比较大小(坑)。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <iostream>
 5 #include <algorithm>
 6 #include <string>
 7 #include <cstdlib>
 8
 9 using namespace std;
10
11 int f(int n)
12 {
13     int sum=0,i;
14     for(i=1;i<=n/2;i++)
15         if(n%i==0)
16             sum+=i;
17     if(sum==n) return 1;
18     else return 0;
19 }
20
21 int main()
22 {
23     int t,a,b,i,cnt;
24     scanf("%d",&t);
25     while(t--)
26     {
27         cnt=0;
28         scanf("%d %d",&a,&b);
29         if(a>b) {i=a;a=b;b=i;}
30         for(i=a;i<=b;i++)
31             if(f(i)) cnt++;
32         printf("%d\n",cnt);
33     }
34     return 0;
35 }
时间: 2024-08-27 22:30:01

(HDU)1046 -- 完数的相关文章

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

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和

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    Acc

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

9 完数求解

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程 找出1000以内的所有完数. 1 public class _009PerfectCount { 2 3 public static void main(String[] args) { 4 5 print(); 6 } 7 8 private static void print() { 9 System.out.println("1~1000的完整数有:"); 10 int j

九度oj 题目1050:完数

题目1050:完数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8778 解决:3612 题目描述: 求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数.即完数是等于其所有因子相加和的数. 输入: 测试数据有多组,输入n,n数据范围不大. 输出: 对于每组输入,请输出1-n内所有的完数.如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格. 样例输入: 6 样例输出: 6 1 #include <io

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 完数

完数 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. 本题的任务是判断两个正

1-1000之间的完数

一个数如果恰好等于它的因子和,这个数就成为完数. 例如:6 = 1 + 2 + 3.再如 8 的因子和是7(即1  + 2 + 4),8不是完数. 编程找出1000以内的所有完数. public class PerfectNum { public static void main(String[] args) { for (int i=1; i <= 999; i++) { if (isPrefectNum(i)) { System.out.println(i); } } } /** * 判断n