1006: 平方和与立方和(2014年中南大学研究生复试机试题 )
1006: 平方和与立方和
时间限制: 1 Sec 内存限制: 128 MB提交: 393 解决: 94
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
给定一段 n 与 m之间连续的整数(包括 n 和 m),求出他们中所有偶数的平方和以及所有奇数的立方和。
输入
输入数据包含多组测试实例,每组测试实例包含一行,两个整数m和 n(0 <= n<= 10000, 0 <= m <= 10000)
输出
对于每组输入数据,输出一行,应包括两个整数 x 和 y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。
样例输入
1 3
2 5
样例输出
4 28 20 152
1 #include<iostream>
2 //#include<limits>
3 using namespace std;
4
5 int main(){//本题出现错误的地方:数据溢出,很容易忽略,下面的加法过程中,为进行
6 //强制转换,使得中间结果已经发生了溢出
7 int n,m;//n<m
8 while(cin>>n>>m){//处理n,m要让大的为m
9 if(n>m){
10 int temp=n;
11 n=m;
12 m=temp;
13 }
14 long long resultN=0,resultM=0;
15 for(int i=n;i<=m;i++){
16 if(i%2==0){//偶数加与偶数的平方和中
17 resultN+=(long long)i*i;//*****出错点:未进行强转!!!
18 }
19 else{//奇数加入奇数的立方和中
20 resultM+=(long long)i*i*i;
21 }
22 }
23 cout<<resultN<<" "<<resultM<<endl;
24 /*long long a=(long long)10000*10000*1000;
25 cout << "\t最大值:" << (numeric_limits<long long>::max)()<<endl;
26 cout<<a<<endl;*/
27 }
28 return 0;
29 }