关闭

【20131201】HDU1001

274人阅读 评论(0) 收藏 举报
分类:

答案如下:

#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)。

心得:

在处理数据时,要注意每一步都要符合数据要求。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1338次
    • 积分:60
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档