Welcome to Yumao′s Blog.
反複計算的問題
, 2011年03月28日 , C Language , 评论 在〈反複計算的問題〉中留言功能已關閉 ,

有這麽道題目:在自動販賣機裏賣巧克力派,1塊錢一個,每個巧克力派裏面都有一張優惠卷,湊夠7個優惠卷換一個巧克力派,問N塊錢,可以買+換多少巧克力派,並剩下幾張優惠卷。
例如:
輸入:20

輸出:巧克力:23 優惠卷:2

程序代碼如下:

#include
int main()
{
int qian,quan,total;
int i=0;
scanf(“%d”,&qian);
total=qian;
quan=qian;
while((int)(quan/7))
{
total+=quan/7;
quan=quan%7+quan/7;
}
printf(“巧克力:%d,剩余券:%d\n”,total,quan);
return 0;
}

這本來是一個狠簡單的問題,不過我以前碰到一個更有意思的題目:

話說汽水一元錢一瓶,三個空瓶又可以換一瓶汽水,問現在有1000元錢,能喝多少瓶汽水呢?

哈哈,這還不簡單,用上面的程序跑一下就可以了,只要把7變爲3,輸出格式修改一下不就OK了嗎?


#include
int main()
{
int qian,quan,total;
int i=0;
scanf(“%d”,&qian);
total=qian;
quan=qian;
while((int)(quan/3))
{
total+=quan/3;
quan=quan%3+quan/3;
}
printf(“汽水:%d,剩余空瓶:%d\n”,total,quan);
return 0;
}

看看運行結果:

1000

汽水:1499,剩余空瓶:2

看起來不錯吧?如果你是一個汽水自動販賣機,那麽完全正確,問題的關鍵是還剩下兩個空瓶

如果是一個精明的小商店老板,你拿兩個空瓶去換一瓶汽水,理論上上你是欠他一個瓶子的,但是別忙,喝完那瓶汽水你馬上給老板,這事不就搞定了嗎?

所以實際上你能夠喝到1500瓶汽水,並且不剩一個空瓶子

但是還沒完,我們來做一道方程題目:

1瓶汽水=一個汽水瓶容量的汽水(不含瓶子)+1個空瓶

3個空瓶=1瓶汽水

現在好了,簡單的兩個方程聯立,你就會得到:一個汽水瓶容量的汽水(不含瓶子)=2個空瓶

于是,你用1000元錢得到1000汽水和1000個空瓶子之後,

立馬將1000個空瓶=500汽水

于是你得到了1500汽水

這應該是最簡單的了。不過機器呢,就不知道允不允許你賒欠了。

关键字:

评论已关闭