首页 > 其他分享 >(1)百钱百鸡问题

(1)百钱百鸡问题

时间:2023-04-12 12:55:34浏览次数:30  
标签:int 百钱 小鸡 问题 循环 百鸡 100

一、问题描述

  中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”: -只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?

二、思路:

1、这道题可以分别设公鸡为x,母鸡为y,小鸡为z,然后找关系列出三元一次方程组。为

(1):x+y+z=100;

(2):5x+3y+z/3=100;

2、对于不定方程足组,我们可以利用暴力枚举来找出解决方案。对于x,x的范围是0~20。对于y,y的范围是0~33,但由于y收到x的影响,实则不会循环到33.

对于z,由于最多只能买100只,z的最大范围是0~100。所以可以利用三层循环暴力枚举除结果。

三、代码实现

(1):三层暴力循环:

#include<iostream>
using namespace std;
int main()
{
    int x, y, z;
    for (x = 0; x <= 20; x++)
    {
        for (y = 0; y <= 33; y++)
        {
            for (z = 0; z <= 100; z++)
            {
                if (x + y + z == 100 && 5 * x + 3 * y + z / 3.0 == 100)
                {
                    cout << x << " " << y << " " << z << endl;
                }
            }
        }
    }
    return 0;
}
View Code 结果:

 

 

(2):优化

因为买的鸡的总数是一定的,所以对于z可以用x,y来表示:z=100-x-y;

所以可以优化掉一层循环,最总变为两层循环。

优化后代码:

#include<iostream>
using namespace std;
int main()
{
    int x, y, z;
    for (x = 0; x <= 20; x++)
    {
        for (y = 0; y <= 33; y++)
        {
            z = 100 - x - y;
            if (5 * x + 3 * y + z / 3.0 == 100)
            {
                cout << x << " " << y << " " << z << endl;
            }
        }
    }
    return 0;
}
View Code 结果:

 

 

 

标签:int,百钱,小鸡,问题,循环,百鸡,100
From: https://www.cnblogs.com/zk126/p/17309436.html

相关文章

  • 使用MySql8.0+项目无法连接数据库问题
    MySql连接字符串:jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai注意这里的useSSL为true:表示使用安全连接经过查阅网络博客发现将useSSL修改为false可以正常连接具体原因之后更新......
  • 兔子产子问题
    兔子产子问题:有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?根据题意列出表格:根据表格分析出第一,二月兔子总数为1,从第三月开始兔子总数等于该月前面两个月兔子总数之和。解......
  • 记一次kvm虚机mysql数据库磁盘扩容操作步骤及其问题小坑
    背景:业务量持续增加,原来规划的1T磁盘空间不足以支撑业务发展存储使用,需要对数据库磁盘进行扩容。目前物理机有新增了2块3.5Tssd的数据盘用于数据库虚机磁盘扩容使用。需要安排时间对其进行操作扩容。操作思路:1、完成磁盘raid1操作,将新磁盘挂载到物理机上并添加到kvm的存储空间......
  • 解决linux系统的kdump服务无法启动的问题
    问题:项目麒麟系统服务器的kdump服务无法启动,没有相关日志无法定位问题。1、查看服务状态是关闭的,重启系统也无法启动systemctlstatuskdump2、修改grub参数,修改“crashkernel”为“512M(有的机器数值太大太小都会导致报错,建议从128M开始试,或者加个high参数,如crashkernel=1024......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-场景问题智能生成从0到1快速入门——官网推荐
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 【Serverless】云数据库端云一体化问题
     【关键字】AGC、HarmonyOS、端云一体化 【问题描述】开发者反馈在鸿蒙应用集成了AGC云数据库服务,在引入AGC服务时遇到了一些问题。具体如下所述:1、HarmonyOSArkTS语言开发,参数是number类型,但是查询的云数据库字段是Integer类型,这要怎么处理。2、样例中querybook的字段b......
  • 【AGC】崩溃服务数据上报常见的几个问题
    最近开发者使用崩溃服务遇到的一些数据异常问题,我在这里汇总一下,以后遇到相似的问题可以以此为参考。 【问题描述1】iOS崩溃数据“按用户搜索”页,“过去7天”是有数据的,但“统计”页没有。​​【解决方案】查询了后台上报日志,发现没有上报应用的启动事件,只上报了$HA_ERRO......
  • 归并排序-使用归并排序实现小和问题-java实现
    什么是归并排序归并排序(MergeSort)是一种基于分治思想的排序算法,它的基本思想是将待排序的序列不断地分割成两个子序列,直到每个子序列只有一个元素,然后再将这两个子序列合并成一个有序的序列。归并排序的基本步骤如下:1.将待排序序列分成两个子序列,分别进行排序。2.将两个已排......
  • 2023-04-11 无向图的匹配问题
    无向图的匹配问题之所以把无向图的这个匹配问题放到最后讲是因为匹配问题借鉴了有向图中一些算法的思想1最大匹配和完美匹配二分图回顾二分图:把一个图中的所有顶点分成两部分,如果每条边的两端分别属于不同部分,则这个图是二分图。更多二分图内容参考第4章二分图相关最大......
  • 约瑟夫环问题---&解题方法 静态单链表&一维数组
      importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);intn=input.nextInt();intm=input.nextInt();int[]ant=newint[150];for(int......