11.17百元百鸡,搬砖问题

题目描述
百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?
本程序要求解的问题是:

输入
输入一个正整数n(n<=100)。

输出
如果有解,种组合占一行,包含公鸡、母鸡、小鸡的个数,用正整数表示,每个数据占4列。公鸡母鸡小鸡个数均大于等于0,按公鸡数目从小到大输出,公鸡数目相同按母鸡数目从小到大输出,以此类推。如果无解,输出“No Answer”。

样例输入
给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?

思路:首先明白钱与鸡数量的关系,关系1.三种数量相加为n 2.三种钱相加也为n其次如果无解,应该输出“No Answer”。其次进行简化,循环的次数越少,计算的速度越快。注意小问题例如小鸡三只一文钱注意应用小数点,否则计算结果会有误差。搬砖问题方法相同

#include <stdio.h>

int main() {
	int n, g, m, x;
	scanf("%d", &n);
	for (g = 1; g <= 20; g++)
		for (m = 1; m <= 34; m++)
			for (x = 1; x <= n; x++){if ((n == g * 5 + m * 3 + x / 3.0) && (n == g + m + x))
					printf("%d %d %d\n", g, m, x);
					else
					
	printf("No Answer");

			}
	return 0;
}		

 该写法为错误的,错误一不应从一开始数,有存在为零的情况。

错误二,输出没有答案写法错误,未结束循环,且应用count计数来截止

正确代码为

#include <stdio.h>

int main() {
	int n, g, m, x, count = 0;
	scanf("%d", &n);
	for (g = 0; g < n; g++)
		for (m = 0; m < n; m++)
			for (x = 0; x < n; x++) {
				if (#include <stdio.h>

int main() {
	int n, g, m, x, count = 0;
	scanf("%d", &n);
	for (g = 0; g < n; g++)
		for (m = 0; m < n; m++)
			for (x = 0; x < n; x++) {
				if ((n == g *5 + m * 3 + x / 3.0 && (n == g + m + x))) {
					printf("%d %d %d\n", g, m, x);
					count++;
				}
	}

	if (count == 0)
		printf("Error\n");
	return 0;

}



}

感谢您的观看,如果喜欢,就请按下下面的小拇指哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值