杭电ACM-1406-完数

来源:互联网 发布:php 数组添加键值对 编辑:程序博客网 时间:2024/06/10 19:01

做这个题的时候,思路很清晰,基本上就是一气呵成;只是在最后输出的格式上出了点小问题!


4-6-2015

至于题目,大家请前往这儿(http://acm.hdu.edu.cn/showproblem.php?pid=1406)



下面就是代码,若哪儿有不对或是什么建议,请各位观者不吝指出!

#include<iostream>using namespace std;int  WanShu(int n){    int sum = 0;//所有因子的和    for(int i = 1; i < n; i++)        if(n % i == 0)            sum += i;    if(sum == n)//判断是否为完数        return 1;    else return 0;}int main(){    int line;//行数    int num1, num2;//输入两个数    cin >> line;    if(line <= 0)        exit(-1);    for(int i = 0; i < line; i++)    {        int sum = 0; //完数的个数        cin >> num1 >> num2;        if(num1 > num2)//判断num1 和 num2 之间的大小 ,把大数放在num2当中         {            int temp;            temp = num1;            num1 = num2;            num2 = temp;        }        if(num1 <= 0)            exit(-1);// 如果不是正整数,则退出        for(int j = num1 ; j <= num2; j++)            sum += WanShu(j);//累加完数的个数        if(i < line - 1)//格式控制。             cout << sum << endl;        else cout << sum;    }    cout << endl;    system("pause");    return 0;}


运行结果:

3<span style="white-space:pre"></span>//  3个例子4 6<span style="white-space:pre"></span>// 查找[4,6]之间的完数个数1<span style="white-space:pre"></span>// 一个,只有620 1<span style="white-space:pre"></span>//查找[1,20]之间的11 50003请按任意键继续. . .


0 0
原创粉丝点击