Day62:鸡兔同笼问题

159 阅读1分钟

Day06 2023/03/04

难度:简单

题目

已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数目,如果无解,则输出 “No answer'”不要引号)

  • 输入:第一行输入一个数据a,代表接下来共有几组数据,在接下来的(a<l0)、a行里,每行都有1个n和m。(0<m,n<100)
  • 输出:输出鸡兔的个数,或者No answer

示例1

输入: 1 35 94
输出:鸡的数量为:23 兔的数量为:12
说明:输入第一个表示测试1组数据,第二个表示总数量,第三个表示总腿数;然后计算输出鸡和兔各自的数量。
  • 当m(总腿数)不为偶数或者鸡或者兔的数量小于0的时候输出“no anwser”

思路: 1.因为题目所给样本很小(0<m,n<100),所以直接选择暴力也很快。 2.因为编程的时候会有类型转换,所以尽量用乘法解决问题,尽量不用到除法

```
/*
* n表示坤,兔总数量
* m表示腿数
* */
```
static void kunAndRabbit(int n, int m){
//两个嵌套循环,i表示鸡的数量,j表示兔的数量,若满足i * 2 + j * 4 == m && i + j == n,则直接返回
    for (int i = 1;i < n;i++){
        for (int j = 1;j < n;j++){
            if (i * 2 + j * 4 == m && i + j == n){
                System.out.println("鸡的个数:" + i);
                System.out.println("兔的个数:" + j);
                //若有结果直接返回,结束循环。
                return;
            }
        }
    }
    System.out.println("No answer");
}
  • 时间复杂度 O(n*n)--- 不考虑输入数据所占用的时间,其他为常数级

  • 空间复杂度 O(1)--- 仅含常数级的变量,除此无额外的辅助空间