首页 > 其他分享 >百鸡问题以及借书方案知多少

百鸡问题以及借书方案知多少

时间:2023-04-10 20:36:00浏览次数:40  
标签:cout int 知多少 借书 百鸡 hen include cock chicken

百钱百鸡问题

一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡,母鸡,小鸡各多少只

根据数学知识可以转化为方程组:

 

解题思路:根据鸡的数量不超过100只以及总价格不超过100,可以得出:公鸡数量为0-20,母鸡数量为0-33,小鸡数量为0-100。运用for循环嵌套实现公鸡,母鸡,小鸡分别取值后判断是否符合题干要求,符合则输出,不符合则继续执行循环(考虑小鸡chicken/3时为整数,要除以3.0以保证数据的准确)

代码实现:

#include<iostream>

#include<iomanip>

using namespace std;

int main()

{

    int cock,hen,chicken;

    for(cock=0;cock<21;cock++)\\公鸡取值为0-20

    {

        for(hen=0;hen<34;hen++)\\母鸡取值为0-33

        {

            for(chicken=0;chicken<101;chicken++)小鸡取值为0-100

            {

                if((cock+hen+chicken==100)&&(5*cock+3*hen+chicken/3.0==100)) \\判断是否符合题意中所得到的条件

                    cout<<"cock="<<setw(2)<<cock<<",hen="<<setw(2)<<hen<<",chicken="<<setw(2)<<chicken<<endl; \\符合条件后输出所需要的各个数量

            }

        }

    }

    return 0;

}

拓展:上面方法循环嵌套三次,而chicken可以用hen和cock表示,减少一次循环,大大增加了计算机的效率

代码实现:

#include<iostream>

#include<iomanip>

using namespace std;

int main()

{

    int cock,hen,chicken;

    for(cock=0;cock<21;cock++)\\公鸡取值0-20

    {

        for(hen=0;hen<34;hen++)\\母鸡取值0-33

        {

            chicken=100-cock-hen;\\减少一次循环,用公鸡和母鸡表示,增加效率

            if(5*cock+3*hen+chicken/3.0==100)\\条件判断

                cout<<"cock="<<setw(2)<<cock<<",hen="<<setw(2)<<hen<<",chicken="<<setw(2)<<chicken<<endl;\\符合条件则输出结果

        }

    }

    return 0;

}

该题体会:阅读完题目分析所需的变量以及变量所需要取的值,根据题干列出能想到的条件的简便表达形式,方便思考。再画出流程图,根据流程图写出代码。

 

 

借书方案知多少:

小明有5本新书,要借给A、B、C这3位小朋友,若每人每次只能借1本,则可以有多少种不同的借法?

解题思路:将五本书编号为1、2、3、4、5,每人只能借1本,则每人借到的书在该种借法中是无法重复的。只需先定义一个整形变量存储借法种数,三次循环结构嵌套后,条件判断三人所借的书是否相同,均不同则输出并且借法种数加一,相同则继续执行循环。

代码:

#include<iostream>

#include<iomanip>

using namespace std;

int main()

{

    int n=0;

    int h=0;

    int i,j,k;

    for(i=1;i<6;i++)\\依次选出A的书

    {

        for(j=1;j<6;j++)\\依次选出B的书

        {

            for(k=1;k<6;k++)\\依次选出C的书

            {

                if(i!=j&&i!=k&&j!=k)\\条件判断

                {

                 n++;\\记录有效借阅方法的种数

                 cout<<"A: "<<i<<" B: "<<j<<" C: "<<k;

                 if(h==0||h==1)\\按照规定的格式输出

                 {

                     h++;

                     cout<<"  ";

                 }

                 else

                 {

                     h=0;

                     cout<<endl;

                 }

                }

            }

        }

    }

    cout<<"共有"<<n<<"种有效借阅方法"<<endl;

    return 0;

}

拓展:

当A与B借的书相同时,C不管借的是什么书都不符合有效借阅方法,所以可以在C的循环当中加入判断条件,A借的书与B借的书不同,如果相同则不进行该次C的循环,可以提高效率

代码:

#include<iostream>

#include<iomanip>

using namespace std;

int main()

{

    int n=0;

    int h=0;

    int i,j,k;

    for(i=1;i<6;i++)\\依次选出A的书

    {

        for(j=1;j<6;j++)\\依次选出B的书

        {

            for(k=1;k<6&&i!=j;k++)\\依次选出C的书,同时判断A,B书是否相同

            {

                if(i!=k&&j!=k)\\条件判断

                {

                 n++;\\记录有效借阅方法的种数

                 cout<<"A: "<<i<<" B: "<<j<<" C: "<<k;\\按照规定输出结果

                 if(h==0||h==1||h==2)

                 {

                     h++;

                     cout<<"  ";

                 }

                 else

                 {

                     h=0;

                     cout<<endl;

                 }

                }

            }

        }

    }

    cout<<"共有"<<n<<"种有效借阅方法"<<endl;

    return 0;

}

该题体会:根据题干所要求的输出方式及时调整自己输出格式,多层循环嵌套中,如果内层的取值与外层的有关,可以先判断外层的取值,如果内层取值因为外层取值而不需要考虑,可以提高效率。

 

标签:cout,int,知多少,借书,百鸡,hen,include,cock,chicken
From: https://www.cnblogs.com/zljzy/p/17304192.html

相关文章

  • Semantic Kernel 知多少 | 开启面向AI编程新篇章
    引言在ChatGPT火热的当下,即使没有上手亲自体验,想必也对ChatGPT的强大略有耳闻。当一些人在对ChatGPT犹犹豫豫之时,一些敏锐的企业主和开发者们已经急不可耐的开展基于ChatGPT模型AI应用的落地探索。因此,可以明确预见的是,AI能力的集成将会是很多应用都将面临的第一事项,而拥有......
  • 【HMS Core】FAQ之机器学习服务知多少
    【问题描述1】使用骨骼点驱动虚拟人偶,华为是否提供相关能力以及可使用的API?【解决方案】API请参考下图:参考链接:https://developer.huawei.com/consumer/cn/doc/development/......
  • 高新技术企业申请知多少
    高新技术企业企业要想参加高新技术企业申报,要提前做好规划,从人员、研发费用、高新收入、知识产权、规章制度这些方面入手,提前布局,筹划申报事宜。1、企业要满足成立一年以上......
  • SHA-256 简介及 C# 和 js 实现【加密知多少系列】
    〇、简介SHA-256是SHA-2下细分出的一种算法。截止目前(2023-03)未出现“碰撞”案例,被视为是绝对安全的加密算法之一。SHA-2(安全散列算法2:SecureHashAlgorithm2)是一......
  • AES 简介 以及 C# 和 js 实现【加密知多少系列】
    〇、AES简介AES的全称是AdvancedEncryptionStandard,意思是高级加密标准。它的出现主要是为了取代DES(DataEncryptionStandardDataEncryptionStandard)加密算法的,......
  • python入门学习笔记004--趣学Python算法--第4例百钱百鸡
    中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只? ......
  • 12_百钱买百鸡
    思路:用循环遍历所有条件,注意每层循环结果终止条件为100钱最大化买鸡的数量(向下取整//)+1(range的最后一位取不到)#12百钱买百鸡foriinrange(1,int(100/5)+1):#公鸡最大......
  • python 数学题 百元百鸡 百马百担 实现代码
    #母鸡三元一只,公鸡一元一只,小鸡0.5元一只,一百元全部买鸡,有多少种不同买法,分别是什么?count=0form_jinrange(1,100//3):forg_jinrange(1,100):forx_......
  • 百钱百鸡问题方案数的 $O(n)$ 及 $O(1)$ 解法
    目录前置知识问题描述问题分析\(O(n)\)解法\(O(1)\)解法前置知识解决本题需要的前置知识是二元一次方程组求解但是就算还没有学到二元一次方程求解应该看一下下面的......
  • Shell 变量知多少?
    bashshell编程和其他编程语言差不多,同样包含变量(存放字符串和数值的容器,可以进行修改、比较、传递)。在引用bash变量时,可以使用一些非常特殊的运算符。bash还拥有内建变......