鸡兔同笼 用 “去脚法”来做 简单快捷!
题目描述
鸡兔同笼是中国古代著名趣题之一。
大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”
这四句话的意思是:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼中各有几只鸡和兔?
输入
输入一行2个整数分别表示脚的数量和头的数量,2个整数之间用一个空格分开
输出
输出2行分别表示鸡的数量和兔子的数量
算法:
上代码(详细看注释):
import java.util.*; public class Main { public static void main(String[] args) { Scanner ch = new Scanner(System.in); int j = ch.nextInt(),t = ch.nextInt(); /*定义 脚 和 头*/ int j_1 = j-t;int j_2 = j_1-t; //第一次抬一只脚, 第二次抬两只脚,鸡就没脚了 int tu = j_2 / 2;//鸡没脚了,兔子还有两只脚,就用脚除以兔子的两只脚 int ji = t-tu; 知道兔子有多少了,那也知道鸡有多少了... System.out.println(ji); System.out.print(tu); } }
----------------------------------------升级-----------------------------------------------------
知道了去脚法 那么我们升级为 去掉两只脚 代码岂不是更简洁和更容易理解吗?
一下去掉两只脚 那么 鸡 是没有脚的 那么就剩下兔子的脚了 即:
全部脚 - (2*头【砍去鸡和兔一人一双脚】) = 兔脚
兔脚 / 2 = 兔子;
头 - 兔子 = 鸡;
那么代码如下:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int foot = in.nextInt(),head = in.nextInt(),ji = 0,tu = 0; //输入脚和头,声明鸡和兔 foot -= 2*head;//脚 = 脚- 砍掉的脚 即:求兔子的脚 tu = foot / 2; //兔子的数量 = 兔子的脚/2 ji = head - tu; // 鸡的数量 = 头 减 兔; System.out.print("鸡:" + ji + " 兔:" + tu); } }