#include
int main()
{
int n,i;//n存放输入的数值,i控制循环
long j;//j存放每次循环的累加值
j=0;
scanf("%d",&n);
if(1<=n<=1000000000)//n的取值范围
{
for(i=1; i<=n; i++)
{
j=j+i;
}
printf("%I64d",j);
}
return 0;
}
用公式计算
j = (1+n)*n/2
比如n=1000000000时 1.015秒才计算出来 但要求要1s内计算出来
#include
#include
int main()
{
double n;//n存放输入的数值,i控制循环
scanf("%lf",&n);
if(1<=n&&n<=1000000000)//n的取值范围
{
n = (n+1)*n/2;
printf("%.0lf",n);
}
return 0;
}
就是直接用n = (n+1)*n/2,n的数据类型最好使用double型,因为无论是long型还是long long型,当你输入1000000000时,数据都会溢出,结果为负值(你可以修改一下n的数据类型试试结果)。