题目描述:
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;
}
}
}
}