C++问题,貌似简单,不知哪里错,还请高手解答?

来源:百度知道 编辑:UC知道 时间:2024/05/28 00:44:48
在编译器上是对的,但在OJ上是错的

给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。

Input
输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。

Output
对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。
你可以认为32位整数足以保存结果。

Sample Input
1 3
2 5

Sample Output
4 28
20 152

#include<iostream>
using namespace std;
void main()
{
int m,n,i,a[10000],x,y;
while(cin>>m>>n)
{
x=y=0;
for(i=m;i<=n;i++)
a[i]=i;
for(i=m;i<=n;i++)
{
if(a[i]%2==0)
x+=a[i]*a[i];
else
y+=a[i]*a[i]*a[i];
}
cout<<x<<' '<<y<<endl;
}
}

#include<iostream>
using namespace std;
void main()
{
int m,n,i,x,y;
while(cin>>m>>n)
{
x=0,y=0;
for(i=m;i<=n;i++)//这里算小数还可以,要
//是大数的话,比如m,n相差很大,下面还得改
//成直接的数学公式才好,那样才快!
{
if(i%2==0)
x+=i*i;
else
y+=i*i*i;
}
cout<<x<<' '<<y<<endl;
}
}