赞
踩
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将第一天剩下的桃子吃掉一半,有多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,发现只剩下一个桃子了。编写程序求猴子第一天摘了多少个桃子。
令第一天一共摘了x个桃子,第一天余量为x/2-1,第二天余量为x/4-3/2,第三天余量为x/8-7/4,由此可得式子为x/2^n-(2^0+...+2^(n-1))/2^(n-1)=1。
因为是第十天早上还没吃,故第九天余量为1,简化式子可得:x=2^1+2^2+...+2^8+2^9+2^9,可得x=1534。
程序为:
(注意次方要引用pow函数)
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int i=1,x=0,y;
- for (i=1;i<=9;i++)
- {
- y=pow(2,i);
- x=x+y;
- }
- x=x+pow(2,9);
- printf("%d",x);
- return 0;
- }
-
- /* x/2^n-(2^0+...+2^(n-1))/2^(n-1)=1
- x=2^1+2^2+2^3+...+2^8+2^9+2^9
- */
由最后的1反推回来
- #include <stdio.h>
- int main()
- {
- int n=1,i;
- for (i=9;i>0;i--)
- {
- n=(n+1)*2;
- }
- printf("%d",n);
- return 0;
- }
-
- /*
- (1+1)×2=4
- (4+1)×2=10
- (10+1)×2=22
- (22+1)×2=46
- (46+1)×2=94
- (94+1)×2=190
- (190+1)×2=382
- (382+1)×2=766
- (766+1)×2=1534
- */
最后结果为1534
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。