C言語の日々の練習 - - - 桃狩り猿

トピック:

サルは初日に桃を数個摘み、すぐに半分を食べ、空腹を満たす前にもう1個食べ、翌朝、残りの半分を食べて、また1個食べました。それからは毎朝、前日の残りを半分以上食べていました。10日目の朝また食べようと思ったら桃が1個だけ残ってました。初日にいくら拾ったんですか?

プログラム分析 (逆転の発想):

猿は初日に桃を拾った後、1日目から9日目までに元の桃の半分を食べ、その後もう1個食べ、10日目には桃を1個残したので、9日目に残った桃は残りの桃に 1 を加えて 2 を掛け、9 回サイクルして初日に桃を収穫します。

コード:

#include <stdio.h>
int main()
{
	int i=9,sum=1;//i表示天数,sum表示桃子数,第十天桃子剩余一个
	for(i=9;i>0;i--)
	{
		sum=(sum+1)*2;
	 } 
	 printf("猴子一共采摘了%d个桃子",sum);
	return 0;
}

コード効果:

 もちろん、前日の桃の数を y1 、翌日の桃の数を y2 とする逆の考え方もあります。9 日目からは 9 は奇数なので、y1 の最終値は桃の合計数になります。

コード:

#include <stdio.h>
int main(){
    int day=9,x1=0,x2=1;
    while(day>0) {
        x1=(x2+1)*2;//第二天的桃子数是前一天桃子数加1后的2倍
        x2=x1;
        day--;
    }
    printf("猴子采摘桃子的总数是%d\n",x1);
    return 0;
}

コード効果:

新年明けましておめでとうございます! 寅年おめでとうございます!

おすすめ

転載: blog.csdn.net/weixin_64131583/article/details/122764456