自然数中,完数寥若晨星,请在从1到某个整数范围中打印出所有的完数来。 所谓“完数”是指一个数恰好等于它的所有不同因子之和。例如,6是完数,因为6=1+2+3。而24不是完数,因为24≠1+2+3+4+6+8+12=36。
Input:输入数据中含有一些整数n(1<n<10000)。Output:对于每个整数n,输出所有不大于n的完数。每个整数n的输出由n引导,跟上冒号,然后是由空格开道的一个个完数,每个n的完数列表应占独立的一行。Sample Input:100
5000
Sample Output:
100: 6 28
5000: 6 28 496
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
//ifstream cin("a.txt");
int sample;
int sum;
int re[10000]={0};
for(int i=2;i<10000;i++)
{
sum=1;
for(int j=2;j<(i/2+1);j++)
{
if(0==i%j)
sum+=j;
}
if(sum!=1)
{
if(sum==i)
re[i]=sum;
}
}
while(cin>>sample)
{
cout<<sample<<':';
for(int i=2;i<=sample;i++)
if(re[i]!=0)
cout<<' '<<i;
cout<<endl;
}
return 0;
}
自己电脑运行程序没有问题,但oj上却wronganswer的常见原
在在线裁判系统(Online Judge, OJ)上遇到程序运行正确,但在本地计算机上却显示错误回答(Wrong Answer, WA)的情况,是许多编程爱好者在比赛或日常训练中面临的问题。针对这一现象,常见的原因归纳如下:首先,边界数据处理不当是最常见的问题之一。编程时往往关注核心逻辑,忽略边界情况的处理。忽略特殊...
oj上显示wrong answer什么原因
oj上显示wrong answer最常见的原因是边界数据没考虑,低估数据强度,漏看数据范围。其次是编译器差异。然后是系统差异。正式比赛选手机器跟判题都是同配置同软件版本,平时训练很难保证。总之看AC率和绝对数:AC绝对数越多坑的几率越低。AC率越高,犯低级错误的概率越高。
在北邮oj上为什么是wrong answer?(一个是我编的程序的结果,另一个是o...
缺少了个换行符号,并且不需要写上" system("pause") ",如果写了上去自然答案也会输出这一句,就错了。另外如果回答得不对楼主可以贴上题目以及代码么?这样方便为你解决问题 希望可以帮到楼主。
为什么编译器上运行正确但oj显示wrong answer?
你可以这样修改:声明和初始化:int mon[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};增加一个元素,让 i=0, 即0月0天,把 一月 放到 mom[1],二月放到 mom[2]...这样你就不用改下标,也不用改 for(int i=1; i<m; i++) sum+=mon[i];(c语言程序,最好把变量声...
C语言。。电脑运行结果正确。。提交OJ 出现wrong answer!
给你一个我以前写的斐波那契大数相加。。题目:http:\/\/acm.hdu.edu.cn\/showproblem.php?pid=1715 参考下,自己在写写。。include<stdio.h> short int fb[1001][100];short int b[1001]={1,1,1};int i;void add(short int x[],short int y[],short int z[]){ int j;for(j=1;j...
杭电OJ题目2034,我的答案正确却总是wrong answer
对于acm的题目,我觉得如果在自己的电脑上运行对了,提交错误,怎么找出来错误,第一,反复读题目,看自己的程序中都满足题目中的要求没有,有时候输出的形式也要注意一下,有可能是要你把所有需要输入的数据都输进去,然后在吧所有输入的处理后再输出,有可能也是输入一个就处理一个,这样的情况也有的...
在本地没错 在oj上却说 wrong answer
一般来说,这种题目都需要一次输入所有,然后再一起输出,你这种一边一边输出的都不满足条件
为什么提交OJ时Wrong Answer?
这个题目并未对输入输出的组数做限制,也就是说程序要求可以输入若干组,你写的只能输入两组,报错原因应该就在于此(个人见解)。这个可以直接写成这样:include<stdio.h>int main(){int a,b;while(scanf("%d%d",&a,&b)!=EOF)printf("%d\\n",a+b);}这样不会有输入输出组数的限制了!
北邮OJ 373题 WrongAnswer 我的代码错在哪?
先不看算的对不对,根据input的要求,一行最多20个字母,而你的程序没有对这块进行处理,所以在使用系统的样本数据时,可能会导致输入的数据不全,所以会Wrong Answer啦。建议:每次读取之后判断最后一个字符是不是‘E’,如果是就可以继续往下走去计算了,如果不是还要继续读取字符。
求助一道ACM题目,编译器得出正确结果但是OJ上显示Wrong Answer
cost[from][to] = map[to][from] = p;改为 cost[from][to] = cost[to][from] = p;