the Sum of Cube
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2420 Accepted Submission(s): 1016
Problem Description
A range is given, the begin and the end are both integers. You should sum the cube of all the integers in the range.
Input
The first line of the input is T(1 <= T <= 1000), which stands for the number of test cases you need to solve.
Each case of input is a pair of integer A,B(0 < A <= B <= 10000),representing the range[A,B].
Each case of input is a pair of integer A,B(0 < A <= B <= 10000),representing the range[A,B].
Output
For each test case, print a line “Case #t: ”(without quotes, t means the index of the test case) at the beginning. Then output the answer – sum the cube of all the integers in the range.
Sample Input
2 1 3 2 5
Sample Output
Case #1: 36 Case #2: 224
Source
题意:就是求解给定范围数的立方的和。
代码1:直接计算,注意数据类型
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define MYDD 1103
using namespace std;
int main() {
int t,t2=1;
double a,b,ans;
scanf("%d",&t);
while(t--) {
scanf("%lf%lf",&a,&b);
ans=0.0;
for(int j=a; j<=b; j++)
ans+=(double)pow(j,3);
printf("Case #%d: %.0lf\n",t2,ans);
t2++;
}
return 0;
}
代码,利用自然数立方和的公式:
S(n)=(n*(n+1))^2/4
#include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #include<algorithm> #define MYDD 1103 using namespace std; double AND(double x ) { return pow(x*(x+1),2)/4; } int main() { int t,t2=1; double a,b,ans; scanf("%d",&t); while(t--) { scanf("%lf%lf",&a,&b); ans=AND(b)-AND(a-1); printf("Case #%d: %.0lf\n",t2,ans); t2++; } return 0; }