首页 > 编程知识 正文

百钱买百鸡解题思路,百钱买百鸡解题思路数学

时间:2023-05-03 17:08:17 阅读:264261 作者:3259

例如此类问题都可以用此代码解决。

1.搬砖问题:36 块砖,36 人搬,男搬 4,女搬 3,两个小孩抬 1 砖,要求一次全搬完,问
男、女和小孩各若干?

2.“百钱买百鸡”是我国古代的著名数学题。
题目描述:3 文钱可以买 1 只公鸡,2 文钱可以买一只母鸡,1 文钱可以买 3 只小鸡。用 100 文钱买 100
只鸡,那么各有公鸡、母鸡、小鸡多少只?

已知 :

男人:4     块砖(a=4)

女人:3     块砖(b=3)

小孩:0.5  块砖(c=0.5)

总砖数=总人数=36(d=36)

设 男人 女人 小孩 人数为 X,Y,Z。

列出公式:

aX+bY+cZ=d

X+Y+Z=d

找出万能公式:

把Z和Y变换出来(变换的步骤很多,已经省略)

Z=

Y=

现在Z与Y只由一个变量X决定,因此现在来循环X,

X 从0循环到 X最大的数量d/a(d/a的意思是 总数量d 除以 X的价值等于它能达到最大的数量d/a

循环的时候 因为a,b,c,d(通过输入)都已经知道。X也以循环的方式不断赋值给出,因此可以得到Z和Y的值。

以下为代码部分。

import java.util.Scanner;/** * Hundred$HundredChicken.java * * @author anyunpei 2018年7月23日下午7:50:10 * 测试用例: 第六题: a=3 b=2 c=1/3(输入0.3333333333) d=100 * 第七题:a=4 b=3 c=1/2(输入0.5) d=36 测试用例通过。 */public class Hundred$HundredChicken {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("输入a人物的价值");// 他搬的砖数就是他的价值,或者买他(鸡)所需的钱.double a = scanner.nextDouble();System.out.println("输入b人物的价值");double b = scanner.nextDouble();System.out.println("输入c人物的价值");double c = scanner.nextDouble();System.out.println("输入总价值,或总数d");// 价值之和与a,b,c之和相等且等于ddouble d = scanner.nextDouble();double aN = 0;// a的数量double bN = 0;// b的数量double cN = 0;// c的数量for (; aN <= (int) d / a; aN++) {bN = (int) (((c - 1) * d + (a - c) * aN) / (c - b));// 同时除了之后会有小数产生会扰乱结果,因此强制转型一下cN = (int) (((1 - b) * d - (a - b) * aN) / (c - b));if (aN + bN + cN != d || bN < 0 || cN < 0) {// 过滤一下因为除法产生的一些小数而造成的不合法输出,比如相加不为100整以及有负数产生。// 有错误只数产生时,不输出只数,执行下一次循环。continue;}System.out.println("a的数量为: " + aN + " b的数量为: " + bN + " c的数量为 " + cN);}}}

运行结果:

第一个测试用例:

 第二个测试用例:

很多相似问题都可以以此程序解决。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。