答案如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
long m,n ;
while(scanf("%ld",&n)!=EOF)
{
if(n%2!=0)
m=(n+1)/2*n ;
else
m=n/2*(n+1) ;
printf("%ld\n\n",m) ;
}
return 0;
}
错误代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
long m,n ;
while(scanf("%ld",&n)!=EOF)
{
m=n*(n+1)/2 ;
printf("%ld\n\n",m) ;
}
return 0;
}
错误原因:
困扰了好久,最终百度到正确的解释:
在测试数据时,给出的数据(n*(n+1)/2)一定是32位整型变量,而(n*(n+1))则未必,于是,WA(wrong answer)。修改后,则AC(accept)。
心得:
在处理数据时,要注意每一步都要符合数据要求。