← 回到文章列表

反复计算的问题

有这么道题目:在自动贩卖机里卖巧克力派,1块钱一个,每个巧克力派里面都有一张优惠卷,凑够7个优惠卷换一个巧克力派,问N块钱,可以买+换多少巧克力派,并剩下几张优惠卷。 例如: 输入:20 输出:巧克力:23 优惠卷:2 程序代码如下:

有这么道题目:在自动贩卖机里卖巧克力派,1块钱一个,每个巧克力派里面都有一张优惠卷,凑够7个优惠卷换一个巧克力派,问N块钱,可以买+换多少巧克力派,并剩下几张优惠卷。
例如:
输入:20

输出:巧克力:23 优惠卷:2

程序代码如下:

\

#include <stdio.h>
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 <stdio.h>
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汽水

这应该是最简单的了。不过机器呢,就不知道允不允许你赊欠了。

写下来,是为了下次少走一点弯路。

在这里找找

输入关键词,找一篇过去的记录。