飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 9807|回复: 34

[C/C++] 10元可以喝几瓶啤酒

[复制链接]

该用户从未签到

发表于 2016-5-27 12:14:45 | 显示全部楼层 |阅读模式
群里看到的题目:  2块钱一瓶啤酒 2个酒瓶可以换一瓶啤酒 4个瓶盖可以换一瓶啤酒 请问10元可以喝多少瓶啤酒

网上有现成的公式和答案,那就再把问题修改下:请帮忙计算 共有100元和35个瓶盖可以换多少啤酒?

细想这个问题,可以用奥数思维去总结公式,也可以用C语言来描述实现逻辑。

用C语言描述的话:就是这些钱可以买的啤酒+这些啤酒可以换的啤酒。 OK 那大家有了逻辑就翻译成C语言试下。


游客,如果您要查看本帖隐藏内容请回复

PYG19周年生日快乐!
  • TA的每日心情

    2022-5-20 13:32
  • 签到天数: 235 天

    [LV.7]常住居民III

    发表于 2016-5-27 12:19:21 | 显示全部楼层
    有意思,来学习一下
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-27 15:18
  • 签到天数: 205 天

    [LV.7]常住居民III

    发表于 2016-5-27 12:19:34 | 显示全部楼层
    前排学习,算法是核心。。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-2-11 15:06
  • 签到天数: 39 天

    [LV.5]常住居民I

    发表于 2016-5-27 12:19:38 | 显示全部楼层
    哈哈,学习一下!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-10-28 10:17
  • 签到天数: 718 天

    [LV.9]以坛为家II

    发表于 2016-5-27 13:13:04 | 显示全部楼层
    [C++] 纯文本查看 复制代码
    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;
    }
    

    不知道对不对

    评分

    参与人数 1飘云币 +8 收起 理由
    Nisy + 8 不错哦,赞~

    查看全部评分

    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-3 22:20
  • 签到天数: 62 天

    [LV.6]常住居民II

    发表于 2016-5-27 13:20:13 | 显示全部楼层
    数学推导过程: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;
    总感觉怪怪的,不知道是不是出错了。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-4-19 21:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-5-27 13:20:17 | 显示全部楼层
    [C] 纯文本查看 复制代码
    #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;
    }
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-9-29 13:03
  • 签到天数: 271 天

    [LV.8]以坛为家I

    发表于 2016-6-1 08:55:47 | 显示全部楼层
    有思想,我就没想过用C写一下
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 11:57
  • 签到天数: 1513 天

    [LV.Master]伴坛终老

    发表于 2016-6-12 15:56:05 | 显示全部楼层
    看看大牛的答案
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表