百钱买百鸡

本文介绍了一道经典的数学问题——使用一定金额购买不同价格的鸡,并满足总数为100只的条件。通过分析问题特点,确定变量的取值范围,采用C语言实现了解决方案,最终输出所有符合条件的购买组合。

前言

虽然感觉这到题目很水,但是看到浏览量这么高,我还是适当的调整一下布局吧,通过页面的源码进行调整,因为csdn的博客编辑功能太弱了,必须手动添加<br>等标签,不然无法识别

题目

题目描述:
    用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。
输入:
    测试数据有多组,输入n。
输出:
    对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。
样例输入:
40
样例输出:
x=0,y=0,z=100
x=0,y=1,z=99
x=0,y=2,z=98
x=1,y=0,z=99


解题思路

    1. x,y的取值范围,假设x为大鸡,y为中鸡,很多人可能直接判断条件就是0 <= x <= 100 || 0 <= y <=100,其实咱都学过数学或者有过实际买东西的经验,买东西的时候是跟实际的金钱挂等号的,而不是跟你的购物欲望划等号。所以这里的x和y的取值应该是 0 <= x <= (int)(money / 5) || 0 <= y <=(int)(money/3)
    2. 因为我定义的x,y,z都为整形,所以判断条件时候需要等号两边都*3

    AC代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
    	int x, y, z, n;
    
    	while(scanf("%d", &n) != EOF)
    	{
    		for(x = 0; x <= (int)(n / 5); x ++)
    		{
    			for(y = 0; y < (int)(n / 3); y ++)
    			{
    				z = 100 - x - y;
    				if((15 * x + 9 * y + z <= n * 3) && z >= 0)
    					printf("x=%d,y=%d,z=%d\n", x, y, z);
    			}
    		}
    	}
    
    	return 0;
    }






    评论 2
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    低调小一

    您的鼓励是我创作最大的动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值