循环解决经典二元一次方程组问题(鸡兔同笼、百僧吃百馍)

题目描述:

100个和尚吃了100个馒头,3个小和尚吃一个馒头,一个大和尚吃三个馒头,问一共有多少个小和尚和大和尚?

或者

笼子里共有100只小动物(鸡和兔)300只腿,一只鸡2条腿,一只兔子4条腿,问一共有多少只鸡和多少只兔子?

问题描述:

二元一次方程组的问题是一个很经典的问题,我们都能列出二元一次方程组,但是最初用电脑去解决的时候,会给人摸不着头脑的感觉,我们还不太熟悉程序语言中的变量问题,提示用循环解决此类问题,那么问题的关键就是判断条件如何设置,变量之间的关系如何使用。

首先我们先给出变量有x个小和尚,和y个大和尚,和尚总数sum1,馒头总数sum2

*****重点来了*****

当我们使用循环的时候,我们将小和尚从x=1开始算,则大和尚y=sum1-x=99,那么循环判断条件为x<=sum1(一共有100个和尚)此时就需要一个新的变量sum3存储他们一共吃了多少个馒头,当这个sum3和sum2相等的时候,就是我们想要的答案了,那么退出循环的条件就有了,即为sum3==2

以此类推,这样就解决了同类的问题,将循环的过程打印出来就能够更好理解此类问题

代码如下:

import java.util.Scanner;

public class Oct3102 {
    //    百僧吃百馍
//    题目:一百个和尚吃了一百个馒头,一个大和尚吃三个馒头,三个小和尚吃一个馒头,问一共有多少个小和尚和大和尚
    public static void main(String[] args) {
//    全局变量 小和尚数量:x  大和尚数量:y   和尚总数量:sum1  馒头数量:sum2
//    得到的数学关系:x/3 + y = 100   x + y = 100
        Scanner input = new Scanner(System.in) ;
        int x;
        int y;
        int sum1 ;
        int sum2 ;
        System.out.println("请输入共有多少个和尚:");
        sum1 = input.nextInt();
        System.out.println("请输入共有多少个馒头:");
        sum2 = input.nextInt();
        for (x = 1 , y = 1; x<sum1 ; x++) {
            y = sum1 - x;
//            三个小和尚吃一个馒头,也就是一个小和尚吃1/3个馒头
            int sum3 = x /3  + y * 3;
            System.out.println(x+" + "+y + "  " + sum3);
            if (sum3 == sum2) {
                System.out.println("一共有" + x + "个小和尚和" + y + "个大和尚");
                break;
            }
        }

    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值