(免费)鸡兔同笼(Python、JAVA、C/C++极简源码,完全正确)

目录

一、前言:

二、原理:

三、Java代码:

四、C/C++代码:

五、Python源码:

六、趣事闲聊:


一、前言:

By:   RuoChen404(Larry,另外一个名字)

        CSDN: 钱塘江上潮信来,今日方知我是我

原创内容,转载须说明及网页地址


二、原理:

核心算法(应该说是公式优化)

y = n/2-m;     x = m-y;

m为头数,n为脚数,x为 只因 数,y为兔数

        原理:m == x+y;  n == 2*x+4*y;   0 < 2m ≤ n ≤ 4m


三、Java代码:

import java.util.*;
public class JiTu{
    public static void main (String args[]){
    int m=0,n=0,x=0,y=0;//头数m,脚数n,鸡数x,兔数y
    Scanner sc = new Scanner(System.in);
    System.out.print("鸡兔同笼问题:\n请输入共有多少个头:\n");
    m = sc.nextInt();
    System.out.println("请输入共有多少只脚:");
    n = sc.nextInt();
    if(n%2!=1){
        y=n/2-m;
        x=m-y;
        if(x>0&&y>0)System.out.println("一共有"+x+"只鸡和"+y+"只兔");
        else System.out.println("输入不合理,无法得出结果");
  }
    else System.out.println("输入错误,脚数为偶数");
  }
}

四、C/C++代码:

C++源码:

#include <iostream>
//using std::cout,std::cin; 连续声明
using std::cout;
using std::cin;
int main(){
    //std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);关闭同步流
    int m=0,n=0,x=0,y=0;
    cout<<"鸡兔同笼问题:\n请输入共有多少个头:\n";
    cin>>m;
    cout<<"请输入共有多少只脚:\n";
    cin>>n;
    if(n%2!=1){
       y=n/2-m;
       x=m-y;
       if(x>0&&y>0)cout<<"一共有"<<x<<"只鸡和"<<y<<"只兔";
       else cout<<"输入不合理,无法得出结果";
    }
    else cout<<"输入错误,脚数为偶数";
return 0;
}

C源码:

#include <stdio.h>
int main(){
    int m=0,n=0,x=0,y=0;
    printf("鸡兔同笼问题:\n请输入共有多少个头:\n");
    scanf("%d",&m);
    printf("请输入共有多少只脚:\n");
    scanf("%d",&n);
    if(n%2!=1){
       y=n/2-m;
       x=m-y;
       if(x>0&&y>0)printf("一共有%d只鸡和%d只兔",x,y);
       else printf("输入不合理,无法得出结果");
    }
    else printf("输入错误,脚数为偶数");
    return 0;
}

五、Python源码:

m = 0;n = 0;x = 0;y = 0
print("鸡兔同笼问题:")
print("请输入共有多少个头:")
m = int(input())
print("请输入共有多少只脚:")
n = int(input())
if n % 2 == 0:
    y = n/2 - m
    x = m - y
    if x >= 0 and y >= 0:
        print("一共有%d只鸡和%d只兔。"%(x,y))
    else:print("输入不合理,无法得出结果")
else:print("输入错误,脚数为偶数。")

六、趣事闲聊:

        上机课被老师嘲笑,解题还要列方程算,还不如小学生,4到10秒就能解出🤣

(上学上的,早就思维固化了,第一念想就是列方程)

                老师直接说,“乘二除二,不就出来了吗?”

        我直接满脸问号😂经过老师解释后,我懂了,兔子都抬两条腿,在地上的腿数就是2m。

(n-2m)再除以2,就得到了兔子的总数,继而求出 坤坤 的总数。

                y = (n-2*m)/2;        x = m-y;

        经过两次提交给老师,老师都给出不合理的地方(都不健壮,输入数据后,存在负数情况,不符合实际情况;不合理时没给出提示😂)

        最后加了两个 if 语句进行判断,并优化了算法(公式)

        第一次写博客,喜欢的话,还请多多支持,只因你太美!!!

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值