高空弹球
题目地址 Python 练习实例20
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
#include "myhead.h"
void coutresult(long long m)
{
int a[32];
int count = 0;
while(m)
{
a[count++] = m % 10;
m = m / 10;
}
if (count <= 10)
{
cout<<"0,";
for (int i = 0; i < 10 - count; i++)
{
cout<<0;
}
}
for (int i = count - 1; i > 0; i--)
{
cout<<a[i];
if (i == 10)
{
cout<<".";
}
}
cout<<endl;
}
int main()
{
long long n = 100;
int count = 10;
long long sum = 0;
for (int i = 0; i < count; i++)
{
sum += n;
n *= 5;
sum *= 10;
sum += n;
}
coutresult(sum);
coutresult(n);
return 0;
}
程序分析:每次都除二,然后相加。
代码分析:考虑到了精度问题,把结果算的更精确。
猴子吃桃子
题目地址 Python 练习实例21
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
#include "myhead.h"
int main()
{
int day = 10, count = 1;
for (int i = 1; i < day; i++)
{
count = 2 * (count + 1);
}
cout<<count<<endl;
return 0;
}
程序分析:采取逆向思维的方法,从后往前推断。
代码分析:循环往回推。