I - the Sum of Cube
A range is given, the begin and the end are both integers. You should sum the cube of all the integers in the range.
Each case of input is a pair of integer A,B(0 < A <= B <= 10000),representing the range A,B A,B.
2 1 3 2 5
Case #1: 36Case #2: 224
思路:这道题关键是数据类型的转换,虽然题目范围A,B都是int型,但是立方后可能会变成long long,各项之
和相加得到的结果更有可能为long long,所以立方应设为long long,最后总和也应是long long;然而直接令总
和是long long,并不对,全部是int型的数据四则运算结果还是int,不会自动转化为long long,所以应令A或B
至少一个为long long,那样最终结果才会是long long;嗯,就这样。
代码一:
代码二:运用数组,#include<stdio.h> int main() { int T,k=0; long long A,B,i,sum=0; scanf("%d",&T); while(T--) { scanf("%lld%lld",&A,&B); for(i=A;i<=B;i++) sum+=i*i*i; k++; printf("Case #%d: %-lld\n",k,sum); sum=0; } return 0; }
#include<cstdio> #include<cstring> #define max 1000000+11 long long a[max]; int main() { memset(a,0,sizeof(a)); int j; long long mul,i,SUM=0; for(i=1;i<=max;i++) { mul=1; for(j=1;j<=3;j++) mul*=i; SUM+=mul; a[i]=SUM; //a[i]表示1到i所有数据三次方之和 } int T,k=0; long long A,B; scanf("%d",&T); while(T--) { scanf("%lld%lld",&A,&B); k++; printf("Case #%d: %-lld\n",k,a[B]-a[A-1]); } return 0; }