开始做杭电acm时注意事项

原创 2015年11月21日 11:57:46

一直想做acm的题但是一直没敢做,今天入门看看,结果发现1+1这样的题都通过不了,一下总结了初次接触会遇到的问题:

1.输入输出问题:

注意题目要求的输出格式

2.最重要的:保证数据计算过程中值的边界问题,不要让值在中间运算的时候超出数值的表示范围。

一下以1001为例子:


题目要求输入若干个值n,分别求1加到n的值,例如题目给出输入1,输出1,输入100输出100,但是在两个结果间加了一个空格,我也不知道出题的是怎么写成批量输入,并批量输出的。实际效果如下:

2.数值计算问题:

正确通过的代码:

#include<stdio.h>
int sum(int n)
{
    if(n%2==0)
     return (n+1)*(n/2);
    else
    return ((n+1)/2)*n;
}
int main()
{
    int a;
    while(scanf("%d",&a)!=EOF)
    {
       printf("%d\n\n",sum(a));
    }
    return 0;
}

错误的代码:

#include<stdio.h>
int sum(int n)
{
   
    return (n+1)*n/2;

//这里或者改成for的1加到n,但是计算效率低

}
int main()
{
    int a;
    while(scanf("%d",&a)!=EOF)
    {
       printf("%d\n\n",sum(a));
    }
    return 0;
}

第二段代码提交了好多次,就是计算错误,后来想想可能是(n+1)*n时可能会发生中间结果越界(大于2147 483 647)之后再除以2,,这时候就没有意义了,所以我们先除以2,在计算乘法,这样能保证最大的计算范围。


杭电acm刷题记录ID1000

Problem Description Calculate A + B. Input Each line will contain two integers A and B. Proce...
  • qq_17125887
  • qq_17125887
  • 2017年10月14日 19:35
  • 106

杭电ACM——自我强化步骤

实验室的师兄编程都很牛逼,我这个小菜鸟私下跟他们讨教了怎样变成牛逼的绝招,“练练练,写写写”这是他们给我的回答。尽管平时他们做项目很忙,但总是会抽出时间刷刷ACM。现在也感觉自己反应速度和算法能力有些...
  • Always2015
  • Always2015
  • 2015年04月09日 21:35
  • 6682

oj提交注意事项

输出double类型时,如果采用G++提交,scanf采用%lf,prinf采用%f,否则会报错
  • Tczxw
  • Tczxw
  • 2016年03月01日 18:59
  • 248

【求助】杭电ACM 1001 一道简单问题,老是PE

#include #include int main() {      int n=0;      int i,sum=0;      while(scanf("%d",&n)!=EO...
  • chenfengfanhua
  • chenfengfanhua
  • 2013年03月19日 22:35
  • 260

杭电 OJ 提交代码需要注意的问题

杭电acm 提交代码需要注意的问题   1. 用 Java 的时候类名请用 Main 2. Java 提交出现 PE 的可能原因有 1) 最基本的错误是空格问题,比如注意每行的末尾是否...
  • u010579068
  • u010579068
  • 2015年03月23日 11:29
  • 1354

杭电ACM 2048

转载自:http://www.acmerblog.com/hdu-2048-3144.html 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2048...
  • liuweiyuxiang
  • liuweiyuxiang
  • 2016年03月30日 23:06
  • 1449

如何开始acm之旅以及需要注意的事项

ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美国计算机协会(ACM)主办的...
  • qwb492859377
  • qwb492859377
  • 2015年09月18日 19:32
  • 1778

开始做杭电acm时注意事项

一直想做acm的题但是一直没敢做,今天入门看看,结果发现1+1这样的题都通过不了,一下总结了初次接触会遇到的问题: 1.输入输出问题: 注意题目要求的输出格式 2.最重要的:保证数据计算过程中值...
  • jialeheyeshu
  • jialeheyeshu
  • 2015年11月21日 11:57
  • 426

杭电2571 命运

命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi...
  • Hacky_acm
  • Hacky_acm
  • 2016年08月02日 12:41
  • 191

杭电ACM——Java版

记录杭电ACM的部分答案,纯手写,如有雷同,算你抄我的。o(∩_∩)o
  • young_kim1
  • young_kim1
  • 2015年04月17日 10:29
  • 2014
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开始做杭电acm时注意事项
举报原因:
原因补充:

(最多只允许输入30个字)