Problem Description
给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。
Input
输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。
Output
对于每组输入数据,输出一行,应包括两个整数x和y,分别表示该段连续的整数中所有偶数的平方和以及所有奇数的立方和。
你可以认为32位整数足以保存结果。
Sample Input
1 3
2 5
Sample Output
4 28
20 152
以下为AC代码:
方法一:
#include<stdio.h>
#include<math.h>
int main()
{
int m,n,i,tmp;
double res1,res2;//用double类型的变量来存储pow的返回值
while(scanf("%d%d",&m,&n)!=EOF)
{
if(m>n)
{
tmp=m; m=n; n=tmp;
}
res1=0; res2=0;
for(i=m;i<=n;i++)
{
if(i%2==0) res1+=pow(i,2);
else res2+=pow(i,3);
}
printf("%.0f %.0f\n",res1,res2);
}
return 0;
}
方法二:
#include<stdio.h>
#include<math.h>
int main()
{
int m,n,i,res1,res2,tmp;
while(scanf("%d%d",&m,&n)!=EOF)
{
if(m>n)
{
tmp=m; m=n; n=tmp;
}
res1=0; res2=0;
for(i=m;i<=n;i++)
{
if(i%2==0) res1+=i*i;
else res2+=i*i*i;
}
printf("%d %d\n",res1,res2);
}
return 0;
}
总结:由于pow的返回值是double型,赋值给int的话会丢失精度。所以要么用double型来存储pow的返回值,要么就不用pow。