問題描述
有一家店的老板,今天心情特別好,特地為大家帶來一項優惠活動:三個空的可樂瓶子可以換一瓶可樂來喝,小明是一位非常愛喝可樂的同學,他已經攢了10個空可樂瓶,算一下他可以換多少瓶可樂呢?答案是5瓶,先用9個空瓶子換3瓶可樂,喝掉3瓶滿的,喝完以后4個空瓶子,用3個再換一瓶,喝掉這瓶滿的,這時候剩2個空瓶子,然后你讓老板先借給你一瓶可樂,喝掉這瓶滿的,喝完以后用3個空瓶子換一瓶滿的還給老板,現在,撰寫一段代碼,計算:如果你有n個空瓶子,最多可以喝掉多少瓶可樂
問題分析和數學處理
毋庸置疑,這一段代碼首先得要定義一個變數,用來存盤空瓶子的個數,可以定義一段整型變數,(代碼中全為int型別)設剛開始有n個瓶子,在經過一次換取后,用掉了(n/3)*3個瓶子(n/3代表換取次數),*3代表每次用掉三個瓶子,換取可樂數顯然為n/3(每一次換取一個可樂)將它存盤在新的變數sum中,也同時增加了n/3個空瓶子,運算式如下
n = n - n / 3 * 3 + n / 3;
但是!有一種特殊情況!
這時候剩2個空瓶子,然后你讓老板先借給你一瓶可樂,喝掉這瓶滿的,喝完以后用3個空瓶子換一瓶滿的還給老板,
這種情況,就屬于1換1,大家都不賺,也都不賠錢,
也就是說,若算到最后,n等于2了,就自動在結果上加上1,小于2就不管它了,
流程圖如下

代碼實作
作者使用c語言代碼實作
#include<stdio.h>
int main()
{
int sum=0;
int n=0;
scanf("%d",&n);
while(n>2)
{
sum += n / 3;
n = n - n / 3 * 3 + n / 3;
if(n==2)
{
sum++;
}
}
printf("%d\n",sum);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286304.html
標籤:其他
下一篇:關于Linux下的一點補充
