#include <iostream>
using namespace std;
/*
Problem Description
给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。
Input
输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。
Output
对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。
你可以认为32位整数足以保存结果。
Sample Input
1 3
2 5
Sample Output
4 28
20 152
*/
int x[1000]; //定义一个组数x,保险起见定义为1000个数值
int main() {
int n, m; //定义n和m。n为开始值,m为结束值
while (cin>>n>>m) //定义while循环输入 n和m的值
{
if (n > m) //加上一个判断 当输入的n(开始数2)大于m(结束数5)时,两个值互换。
{
int tmp = n; n = m; m = tmp; //!!!重点,数值互换一定要用分号;!!!不能用逗号
}
int cnt = m - n + 1; //定义一个cnt 记录 结束数m - 开始数n +1 之间有多少位数。如:5-2=3+1=4 。即为 2 3 4 5 = 4位数
for (int i = n; i <= m; i++) //定义一个for循环,i=n(2),i小于等于m(5)时,i自加一
{
x[i - n] = i; //x[i - n] = i,由于上面 i = n。实际公式 = x[2 - 2](x[0] = 2)
}
int oushu = 0, jishu = 0; //定义一个oushu"偶数"和jishu“奇数”并初始化为0
for (int i = 0; i < cnt; i++) //定义for循环,i=0,i小于cnt(结束数m - 开始数n +1 的位数)时,i自加一
{
if (x[i] % 2 == 0) //判断数组x[0]至x[4] 模2 是否等于0,如果是0则为偶数。
{
cout <<"偶数为:" << x[i] << "" << endl; //已知2至5中,偶数为 2 和 4
oushu += x[i] * x[i]; //偶数公式等于 oushu = oushu + x[i] * x[i],初始偶数 = 0,所以公式 4 = 0 + x[0]“2” * x[0]“2”,然后 20 = 4 + x[2]“4” * x[2]“4”
}
else
{
cout << "奇数为:" << x[i] << "" << endl;//已知2至5中,偶数为 3 和 5
jishu += x[i] * x[i] * x[i]; //奇数公式等于 jishu = jishu + x[i] * x[i],初始奇数 = 0,所以公式 27 = 0 + x[1]“3” * x[1]“3” * x[1]“3”,然后 152 = 9 + x[3]“5” * x[3]“5”* x[3]“5”
}
}
cout << oushu << " " << jishu << endl; //最后输出 偶数和 奇数
}
return 0;
}
7-习题-2.平方和与立方和
来自
标签:
发表回复