代码一
# include<stdio.h>
# include<math.h>
int main()
{
int h1,n,m,j,k;
double sum=0,h2=0;
scanf("%d %d",&h1,&n);
if(n>0) //注意一定要讨论n==0这种情况
{
sum=h1;
for(m=1;m<=n;m++)
{
sum+=h2*2;
h2=h1/pow(2,m); //这个地方调用函数了,运算速度慢
}
}
printf("%0.1lf %0.1lf",sum,h2);
return 0;
}
代码二
# include<stdio.h>
int main()
{
int h1,n,m;
double sum=0,h2=0,j=2;
scanf("%d %d",&h1,&n);
if(n>0)
{
sum=h1;
for(m=1;m<=n;m++)
{
sum+=h2*2;
h2=h1/j;
j*=2; //更快
}
}
printf("%0.1lf %0.1lf",sum,h2);
return 0;
}
观察,先加S,后变h,很有规律;
让我猜猜:是不是没有讨论n==0的情况。