杭电OJ1001

杭电1001题,计算从1加到n,一个等差数列。题目如下:

  • 有两种算法,一种是从1加到n,每次循环之后sum要记得清空,赋值为0,我就在这一点上出错了,输出的值总是差一点。
    代码如下:
#include<stdio.h>
int main (void)
{int i=0,sum=0,n;while(scanf("%d",&n)!=EOF){for(i=1;i<=n;i++){sum+=i;}printf("%d\n\n",sum);sum=0;}return 0;
}
  • 第二种算法,就是上小学时听的那个关于高斯的故事:

高斯7岁那年开始上学。10岁的时候,他进入了学习数学的班级,这是一个首次创办的班,孩子们在这之前都没有听说过算术这么一门课程。数学教师是布特纳,他对高斯的成长也起了一定作用。
一天,老师布置了一道题,1+2+3······这样从1一直加到100等于多少。
高斯很快就算出了答案,起初高斯的老师布特纳并不相信高斯算出了正确答案:"你一定是算错了,回去再算算。”高斯非常坚定,说出答案就是5050。高斯是这样算的:1+100=101,2+99=101······50+51=101。从1加到100有50组这样的数,所以50X101=5050。
布特纳对他刮目相看。他特意从汉堡买了最好的算术书送给高斯,说:“你已经超过了我,我没有什么东西可以教你了。”接着,高斯与布特纳的助手巴特尔斯建立了真诚的友谊,直到巴特尔斯逝世。他们一起学习,互相帮助,高斯由此开始了真正的数学研究。

也就是正常人算这种题的算法:首尾相加乘以个数除以二。但是不能直接用等差数列求和公式,因为题中有这么一句:
You may assume the result will be in the range of 32-bit signed integer.
要求数据不能超过三十二位,那么n很大的时候n*(n+1)会溢出,造成Wrong Answer。我就是在本地运行的好好的,结果上OJ就WA,后来才发现是这么个问题。
先判断奇偶,然后把n和n+1中偶数的一方除以二,再相乘,这样就不会溢出了,顺利AC。
代码如下:

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

杭电OJ1001 C相关推荐

  1. 【杭电ACM】1097 A hard puzzle

    [杭电ACM]1097  A hard puzzle http://acm.hdu.edu.cn/showproblem.php?pid=1097 先用int手写了算法结果竟然wrong answer ...

  2. 【ACM】杭电OJ 1106 函数atoi

    函数atoi是把字符串转化成整数的函数,头文件为 #include "stdlib.h" e.g. 运行环境:Dev-C++ 5.11 杭电1106 调用了sort函数,运行的时间 ...

  3. 【ACM】杭电OJ 2037

    题目链接:杭电OJ 2037 先把b[i]进行排序,然后,b[i]与a[i+1]进行比较. #include <iostream> #include <cstdio> #inc ...

  4. 【ACM】杭电OJ 2020(排序)

    题目链接:杭电OJ 2020 排序可以有冒泡排序,选择排序,或者直接调用函数. 下面是选择排序: #include <stdio.h> #include <math.h> in ...

  5. 【ACM】杭电OJ 2018

    题目链接:杭电OJ 2018 从n>4开始,每一年的牛的数量=前一年的牛的数量+三年前的牛的数量 问:为什么是三年前? 答:假设三年前有一头小牛出生,出生的那一年即为第一年,到了第四年,即三年后 ...

  6. 【ACM】杭电OJ 1005

     题目链接:杭电OJ 1005 超时代码如下(而且开辟的数组空间大小不够): #include <stdio.h> int m[100000]; int f(int n,int a,int ...

  7. 【ACM】杭电OJ 1004

     题目链接:杭电OJ 1004 运行环境:Dev-C++ 5.11 思路: 先把先把num数组全部赋值为1:第一个颜色单独输入,从第二个开始,需要与前面的进行比较,如果前面有相同的颜色,则在目前的nu ...

  8. 【ACM】杭电OJ 2012。

    题目链接:杭电OJ 2012 思路很简单,但是有一种高效算法显示编译错误,不知道为什么 运行环境:VS2017 AC代码: #include <stdio.h> #include < ...

  9. 【ACM】杭电OJ 1003。

    运行环境VS2017  题目链接:杭电OJ 1003 主要思想是: 用d[i]来存放前i项中最大的和,得到end,然后再倒推,得起始的位置begin 然而在程序42行的疑问,大家可以讨论一下吗???? ...

最新文章

  1. plsql 无法解析指定的连接标识符_Java方法加载、解析、存储、调用
  2. java socket send_java socket编程
  3. 09.MyBatis的逆向工程
  4. fedora 27 mysql_无法在Fedora27上的Python2 virtualenv中使用mysqldb
  5. AIR中用户离开状态和返回状态
  6. C#写爬虫,版本V2.1
  7. java xml开发_JavaWeb开发(XML简介)---3
  8. 以色列Aladdin HASP SRM(AES-128)加密狗破解经验分享
  9. 关于HTTP GZIP解压问题
  10. 微信公众号文章排版php,微信内容排版工具总结
  11. python柱状图颜色_Python 绘制 柱状图
  12. Null(空值)和 Undefined(未定义)
  13. MQ如何快速实现流量削峰填谷
  14. 计算机系统原理之程序是怎么运行的
  15. 奇异值分解的物理意义
  16. 渗透测试工具篇——sqlmap
  17. uva 10859 放置街灯树形dp
  18. 【应用实例】基于单片机的激光相位测距仪
  19. 默认网络设备流量控制
  20. allow control allow origin_热分析/红外光谱联用的数据分析方法 第7部分 在Origin软件中三维红外光谱图的作图方法...

热门文章

  1. ismobile什么意思_英语is是什么意思?
  2. 以匠人之心,做最完美的产品
  3. 我的2018:自由职业的冰火两重天
  4. SVM-SMO算法C++实现
  5. iOS一键生成所有图标
  6. [C语言]统计单词:输入一行字符(其中仅包含英文字母和空格),用函数编程统计其中有多少单词。假设单词之间以空格分开。
  7. 关于人发声的原理及模型
  8. Unity 接讯飞离线语音识别
  9. Python探索之旅 | 第一部分第二课:安装Python和Python的常用开发软件
  10. 担心PPT封面页不够出彩?这些例子你都知道吗?