#include<iostream>
using namespace std;
int main()
{
long long int a,d,i;
while(scanf("%lld%lld%lld",&a,&d,&i)!=EOF)
{
long long int sum,ii;
i%=2009;
ii=(i+1)*i;
sum=i*(i+1)*(i+2)*a/6+(ii-2)*ii*d/24;
sum%=2009;
printf("%lld/n",sum);
}
return 0;
}
开始定义是必须定义i为lld型,否则出错,错误原因很简单,计算过程仅用Int型计算,只是结果强制转换罢了
用到主要公式:1*1*1+2*2*2+3*3*3...+n*n*n=((1+n)n/2)^2
1*1+2*2+3*3+...+n*2=n(n+1)(2n+1)/6
接下来就是等差公式了。。。。
最后就AC啦
using namespace std;
int main()
{
long long int a,d,i;
while(scanf("%lld%lld%lld",&a,&d,&i)!=EOF)
{
long long int sum,ii;
i%=2009;
ii=(i+1)*i;
sum=i*(i+1)*(i+2)*a/6+(ii-2)*ii*d/24;
sum%=2009;
printf("%lld/n",sum);
}
return 0;
}
开始定义是必须定义i为lld型,否则出错,错误原因很简单,计算过程仅用Int型计算,只是结果强制转换罢了
用到主要公式:1*1*1+2*2*2+3*3*3...+n*n*n=((1+n)n/2)^2
1*1+2*2+3*3+...+n*2=n(n+1)(2n+1)/6
接下来就是等差公式了。。。。
最后就AC啦