10元可以喝几瓶啤酒
群里看到的题目:2块钱一瓶啤酒 2个酒瓶可以换一瓶啤酒 4个瓶盖可以换一瓶啤酒 请问10元可以喝多少瓶啤酒网上有现成的公式和答案,那就再把问题修改下:请帮忙计算 共有100元和35个瓶盖可以换多少啤酒?
细想这个问题,可以用奥数思维去总结公式,也可以用C语言来描述实现逻辑。
用C语言描述的话:就是这些钱可以买的啤酒+这些啤酒可以换的啤酒。 OK 那大家有了逻辑就翻译成C语言试下。
**** Hidden Message *****
有意思,来学习一下
前排学习,算法是核心。。
哈哈,学习一下! int fun(int nMoney, int nCap)
{
int nBottle = nMoney / 2;
nCap += nBottle;
int nCount = nBottle;
int nTmp = 0;
while(nBottle >= 2 || nCap >= 4)
{
if(nBottle >= 2)
{
nTmp = nBottle / 2;
nCap += nTmp;
nCount += nTmp;
nBottle = nTmp + nBottle % 2;
}
if(nCap >= 4)
{
nTmp = nCap /4;
nBottle += nTmp;
nCount += nTmp;
nCap = nTmp + nCap % 4;
}
}
return nCount;
}
int main(int argc, char* argv[])
{
int nCount = fun(10, 0);
return 0;
}
不知道对不对 数学推导过程:a(元),b(身),c(盖),d(酒)2a = b + c + d;
2b = b + c + d;
4c = b + c + d;
后两公式推出:
c = d;
推出:
b = 2d;
2a = 2d + d + d;
a = 2d;
---------------------------------
100a + 35c = 100* 2d + 35*d;
= 235d;
总感觉怪怪的,不知道是不是出错了。
#include <stdio.h>
int main(void)
{
int money = 0, jar = 0, gai = 0;
int all = jar;
int t = 1;
scanf("%d%d", &money, &gai);
jar = money / 2;
gai += jar;
all += jar;
while (t)
{
if (gai >= 4 || jar >= 2)
{
int c = gai / 4 + jar / 2;
all += c;
gai = c + gai % 4;
jar = c + jar % 2;
}
else
{
t = 0;
}
}
printf("%d", all);
return 0;
} 膜拜校长!
有思想,我就没想过用C写一下 看看大牛的答案