本文主要是介绍hdoj 1001 水题坑人 小心,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接
可能在n*(n+1)乘法的时候,会溢出。看这句要求“You may assume the result will be in the range of 32-bit signed integer ”,要求的是求和结果是32位有符号整数。OJ给出的测试数据的求和结果(n*(n+1)/2)一定是32位整数范围内的,但是(n*(n+1))就不一定了
所以n(n+1)在这里不可行
另外这题输出结果需要blank line(空行)
#include<iostream>
using namespace std;int main(){int n;long long sum;while(scanf("%d",&n) != EOF){sum = 0;int t = n%2 == 0 ? n/2*(n+1) : (n+1)/2*n;//这样在用公式之前 先除2防止溢出// int t = n*(n+1)/2;printf("%d\n",t);printf("\n");}return 0; }
这篇关于hdoj 1001 水题坑人 小心的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!