C语言 “百鸡问题”最优解

article/2025/8/29 22:25:29

“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
问题分析
cocks,hens,chicks;//公鸡、母鸡、小鸡
设公鸡为x,母鸡为y,小鸡为z,有以下关系

  1.    x+y+z=100,//根据百鸡的数目,得到的数学表达式
    
  2.   5x+3y+z/3=100,//根据百钱的数目,得到的数学表达式
    

下面再看看x,y,z的取值范围。
由于只有100文钱,
则5x<100 ===> 0<x<20,
同理 3y<100 ===> 0<y<33.333,
那么z=100-x-y,

好,现在我们已经分析清楚了,下面直接上代码了。
在这里插入图片描述

#include <stdio.h>
main( )
{
int cocks,hens,chicks;//公鸡、母鸡、小鸡
cocks=0;
while(cocks<=19){hens=0;while(hens<=33){chicks=100-cocks-hens;if(5*cocks+3*hens+chicks/3==100&&chicks%3==0)printf("%d,%d,%d\n",cocks,hens,chicks);hens=hens+1;}cocks=cocks+1;}
}

根据上述的调试结果,我们发现这样一个规律:
在这里插入图片描述
第一列公鸡数是4的倍数;
第二列母鸡数是以7为公差递减的;
第三列鸡崽数是3的倍数。
之前的代码:

  1.    x+y+z=100,//根据百鸡的数目,得到的数学表达式
    
  2. 5x+3y+z/3=100,//根据百钱的数目,得到的数学表达式
    

根据规律优化后
===========>
x+y+z=100 ①
5x+3y+z/3=100 ②

令②x3-① 可得
7x+4y=100

设x=4n,
则y=(100-28n)/4,即y=25-7n
所以z=75+3n
在这里插入图片描述
观察第一次调试结果,x的取值范围是[0,12],===>n的取值范围是[0,3]
再上代码,这是优化后的“最优解”哦:
在这里插入图片描述

#include <stdio.h>
main( )
{	int cocks,hens,chicks;//公鸡、母鸡、小鸡for(int n=0;n<=3;n++){	cocks=4*n;hens=25-7*n;chicks=75+3*n;printf("%d,%d,%d\n",cocks,hens,chicks);} 
}

简单不?简单的很呐!
数学是理科的“小王子”,这不是我第一次用数学知识解决编程问题了。类似的循环嵌套,哦,不,能够跟“数学问题”有关的,都可以用数学知识来解决,多动手尝试,多动手去发现“美”!


http://chatgpt.dhexx.cn/article/Hv5BPAgW.shtml

相关文章

百鸡问题的四种(层)解法

例题&#xff1a;百鸡问题 有一个人有一百块钱&#xff0c;打算买一百只鸡。到市场一看&#xff0c;公鸡五块钱一只&#xff0c;母鸡三块钱一个&#xff0c;小鸡一块钱三只。现在&#xff0c;请你编一程序&#xff0c;帮他计划一下&#xff0c;怎么样买法&#xff0c;才能刚好用…

利用usmart组件对stm32进行调试

一、介绍usmart 二、使用usmart的三个前提 1、封装好正点原子的usmart文件 2、写好串口的hal库回调函数及其中断处理函数 3、是否开启一个定时器中断&#xff08;最好选是&#xff09; 开启&#xff1a;1&#xff0c;关闭&#xff1a;0 三、将需要调试的代码usmart_config.c内…

USMART组件应用

首先通过usmart组件可以用来调试程序里的任何函数的参数&#xff0c;通过串口助手。 USMART的特点&#xff1a; 1&#xff0c; 可以调用绝大部分用户直接编写的函数。 2&#xff0c; 资源占用极少&#xff08;最少情况&#xff1a; FLASH:4K SRAM:72B &#xff09;。 3&#xf…

STM32学习笔记(十八)USMART调试组件实验

STM32F103ZET6之USMART调试组件实验 文章目录 STM32F103ZET6之USMART调试组件实验前言一、简介二、使用步骤1.将相关文件复制到文件夹2.添加相关.c及.h文件至工程下3.配置相关函数 三、实验结果总结 前言 对于STM32的学习可分为3个版本。1.寄存器版本2.库函数版本3.HAL库版本由…

【正点原子STM32连载】 第二十六章 USMART调试组件实验摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第二十…

【正点原子STM32连载】 第二十六章 USMART调试组件实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

1&#xff09;实验平台&#xff1a;正点原子MiniPro H750开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id677017430560 3&#xff09;全套实验源码手册视频下载地址&#xff1a;http://www.openedv.com/thread-336836-1-1.html 4&#xff…

使用cubemx 生成Usmart调试神器,以STM32F103RE为例

1.USMART是什么&#xff1f; 使用USMART&#xff0c;你可以轻易的修改函数参数、查看函数运行结果&#xff0c;从而快速解决问题。 比如你调试一个摄像头模块&#xff0c;需要修改其中的几个参数来得到最佳的效果&#xff0c;普通的做法&#xff1a;写函数→修改参数→下载→…

(21)STM32——通过键盘控制舵机和LED灯(利用正点原子USMART实现)

目录 学习目标 运行结果 内容 调试过程 应用场景 特点 文件组介绍 配置步骤 usmart_config.c main.c 系统命令 串口调试 代码 总结 学习目标 本节我们来学习有关正点原子USMART的章节&#xff0c;简而言之&#xff0c;USMART是一种调试工具&#xff0c;具体的工作…

STM32------USMART调试组件

目录 一、什么是USMART 二、USMART调试过程 三、USMART应用场景 四、USMART特点 五、USMART文件组 六、USMART配置步骤 七、USMART系统命令 一、什么是USMART 二、USMART调试过程 三、USMART应用场景 四、USMART特点 五、USMART文件组 六、USMART配置步骤 &#xff08;TFTLCD实…

STM32的USMART移植

使用USMART的原因 当博主也是学生的时候&#xff0c;并没有觉得USMART有多大的作用&#xff0c;就当作一个串口信息交互而已&#xff0c;我可以直接用串口来写就好了&#xff0c;当然这跟我之前没有认真了解过USMART的功能有关&#xff0c;忽略了这个简单却又十分使用的调试助…

stm32-mini学习笔记-USMART调试组件

目录 USMART调试过程 USMART特点 USMART文件简介 USMART配置步骤 USMART系统命令 实验现象 main中代码 USMART调试过程 1.串口发送命令调用函数 2.单片机节后到命令后&#xff0c;解析命令&#xff0c;调用对应的函数 3.调用函数 USMART特点 1&#xff0c; 可以调用绝…

USMART学习

文章目录 前言一、例程测试二、使用方法总结 前言 正点原子USMART组件可以方便地对函数参数进行修改&#xff0c;学习以下如何使用。 实验平台&#xff1a;战舰开发板F103 实验目的&#xff1a;学习USMART使用 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供…

STM32学习之USMART使用

看到没有,我不是标题党,这个蓝桥杯用不了我就没加!! USMART是正点原子推出的一款利用串口通信方便调参的工具。 简单来说: 一般情况下函数的入口参数调整很麻烦,你需要 1.改变参数 2.编译 3.下载 4.观察 用了USMART以后,只需要 1.串口发送你需要的参数 2.观察 这样子…

STM32F4_USMART调试组件

目录 1. USMART是什么&#xff1f; 2. USMART的特点 3. USMART实现流程 4. USMART组件 5. 在usmart_config.c中添加想要被USMART调用的函数 6. 实验程序 6.1 main.c 6.2 usmart.c 6.3 usmart.h 7. USMART调试的优越性说明 1. USMART是什么&#xff1f; USMART 是 AL…

正点原子USMART组件移植

文章目录 一、打开Cube&#xff0c;建立工程二、系统配置三、配置测试IO四、在 Clock Configuration中:五、工程输出配置六、开始移植七、组件分析 MCU&#xff1a;正点原子阿波罗开发板 IDE&#xff1a; MDK-ARM V5 STM32CubeMX5.2.2 一、打开Cube&#xff0c;建立工程 点击AC…

USMART组件

USMART调试组件 一、原理 首先&#xff0c;啥是USMART啊&#xff1f; 简单来说就是通过串口与开发板进行交互的工具。使用USMART的目的是减少使用J-LINK调试或者修改代码输入参数再进行下载等操作&#xff0c;通过串口传递参数&#xff0c;从而简化程序修改过程以及减少FLASH…

USMART调试组件实验

USMART是正点原子团队为其STM32开发平台开发的一种类似linux的shell的调试工具。具体工作过程是通过串口发送命令给单片机&#xff0c;然后单片机收到命令之后调用单片机里面对应的相关函数&#xff0c;并执行&#xff0c;同时支持返回结果。 USMART调试过程&#xff1a; USMA…

stm32之USMART调试组件的使用

文章目录 一、USMART是什么&#xff1f;二、使用步骤 一、USMART是什么&#xff1f; USMART 是由 ALIENTEK 开发的一个灵巧的串口调试互交组件&#xff0c;通过它你可以通过串口助手调用程序里面的任何函数&#xff0c;并执行。因此&#xff0c;你可以随意更改函数的输入参数(…

USMART 调试组件实验

文章目录 前言一、USMART调试组件简介USMART组件的移植 二、硬件设计三、软件设计 前言 本章&#xff0c;我们将向大家介绍一个十分重要的辅助调试工具&#xff1a;USMART 调试组件。该组件由 ALIENTEK 开发提供&#xff0c;功能类似 linux 的 shell&#xff08;RTT 的 finsh …

USMART串口调试

目录 一、USMART简介二、USMART的移植2.1 usmart_str.h头文件2.2 usmart.h头文件2.3 usmat_str.c源文件2.4 usmart.c源文件2.5 usmart_config.c源文件 三、USMART的实现3.1 USMART的实现流程3.2 USMART的调用 一、USMART简介 USMART是由ALIENTEK开发的一个灵巧的串口调试互交组…