1001Sum Problem

mac2022-06-30  27

Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 224457 Accepted Submission(s): 55071

Problem Description

Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n.

Input

The input will consist of a series of integers n, one integer per line.

Output

For each case, output SUM(n) in one line, followed by a blank line. You may assume the result will be in the range of 32-bit signed integer.

Sample Input

1 100

Sample Output

1 5050

 

水题,不过有个陷阱,坑了我好久啊,一个边界溢出问题,要注意。

下面是AC代码:

用这种方法写是没什么问题的,注意用long类型:

#include<stdio.h> int main () { long int n,i,sum; while(scanf("%ld",&n)!=EOF) { sum=0; for(i=1;i<=n;i++) { sum+=i; } printf("%ld\n",sum); printf("\n"); } return 0; }

但是如果用求和公式的话,一定要这样,防止边界溢出,考虑项数除以2 是否为0

#include<iostream> using namespace std; int main() { int s,n; while(cin>>n) { s=(n%2==0?n/2*(n+1):(n+1)/2*n); cout<<s<<endl<<endl; } }

java版就大的多

import java.util.*; public class Main { public static void main(String[] args) { int sum,i,n; Scanner cin = new Scanner(System.in); while(cin.hasNext()) { sum =0; n=cin.nextInt(); for(i=0;i<=n;i++) {sum+=i;} System.out.println(sum); System.out.print("\n\n"); } } }

转载于:https://www.cnblogs.com/LZYY/p/3306585.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)