大佬们,怎么把这个程序算非常大的数时 计算用的时间更短 ?

#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的数据类型试试结果)。