ACM 非常简单的

来源:百度知道 编辑:UC知道 时间:2024/06/27 20:25:27
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

其实就是求n!,但是我有几个疑问
1.如何实现输入的完成,因为事前不知道要输入几个数字,如果我输入1,回车,输入100,回车,怎么确定输入结束呢?
2.我可以实现输入1回车,然后就输出1,输入2,就输出2,但是,我怎么实现输入1,2,3后再出结果呢?
1楼的回答完全就是该题的错点,完全错掉。。。。
http://acm.hdu.edu.cn/showproblem.php?pid=1001
原题在这里

C语言用

int n;
while( scanf("%d", &n) != EOF)
{
..
}

或者

while(scanf("%d", &n) != -1)
{
}
C++:
int n;
while( cin>>n )
{
}

这个不是求N!
是 (n*(n+1))/2

AC的程序
#include <iostream>
using namespace std;

int main()
{
long long n;
while( cin>>n )
{
cout<<( n*(n+1) ) / 2<<endl<<endl;
}
return 0;
}

自己设置一个输入结束标志,例如输入 # 结束,否则神仙也不知道你想输入几个结束。
就是用while循环接收输入值,可以放到一个数组里面,输入结束后再逐个计算结果。
本题确实不是计算 n!,是 n*(n+1)/2

你用开辟内存的方法吧,很容易:
#include <stdio.h>
#include <stdlib.h>

long sum(long n)
{
long ret,i;
if(n<1)
exit(0);
for(i=1,ret=0;i<=n;i++)
ret+=i;
return ret;
}

void main()
{
int i,n;
long *p;

scanf("%d" ,&n);