学习目标不定方程百钱买百鸡枚举法的练习计算机发展过程(二)第三代计算机(1965年-1971年)采用中、小规模集成电路(MSI、SSI)取代了晶体管,用半导体存储器淘汰了磁芯存储器。软件方面出现了分时操作系统以及结构化、规模化的程序设计方法。高级语言更为流行,如Basic、Pascal等。应用于计算、管理及控制,代表机型IBMSystem/360。方程与解●含有未知数的等式叫做方程● 使方程左右两边相等的未知数的值,叫做方程的解● 未知数个数多于方程个数的方程或方程组,叫做不定方程● 不定方程的特点:可能有无数个解例如,不定方程5*x+y=20 在正整数范围内的解有:x=1, y=15x=2, y=10x=3, y= 5用枚举法求解不定方程购买方案● 问题:妈妈给了小明100元钱,如果一只鸡卖2元,一只兔子卖10元,要求刚好花完妈妈给的所有钱,请问小明一共有几种购买方案?每种方案鸡、兔各几只?● 思路:设鸡买a只,兔子买b只,得到方程2xa + 10xb = 100-------------a + 5xb = 50(a, b=0)根据方程,如果a=0,则b=10。所以,b的取值范围为:0~10。百钱买百鸡● 问题:我国古代数学家在《算经》中有一道题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡,母鸡,小鸡各多少?n钱买m鸡公鸡每只5元钱,母鸡每只3元钱,小鸡3只1元钱。如果用n元钱买m只鸡,问公鸡、母鸡和小鸡可以各买多少只?注意:必须把n元钱正好用完,且买的各种鸡的只数为大于等于0的整数。请聪明的你通过编写程序找出结果。【输入】只有1行,两个数n和m(0n,m = 20000)。【输出】有若干行,每行三个数,分别为公鸡、母鸡和小鸡的只数,用空格隔开,按照公鸡只数升序排列。【输入用例】100 100【输出用例】0 25 754 18 788 11 8112 4 84#includebits/stdc++.husingnamespacestd;intmain(){intn,m,z;cinnm;for(intx=0;x=n/5;x++)//枚举公鸡for(inty=0;y=n/3;y++)//枚举母鸡{z=m-x-y;//根据总数m算出小鸡的只数//判断小鸡是否3的倍数只,并且总价是否n钱if((z=0)(z%3==0)(x*5+y*3+z/3==n))coutx" "y" "zendl;
C++枚举法(三)
学习目标不定方程百钱买百鸡枚举法的练习计算机发展过程(二)第三代计算机(1965年-1971年)采用中、小规模集成电路(MSI、SSI)取代了晶体管,用半导体存储器淘汰了磁芯存储器。软件方面出现了分时操作系统以及结构化、规模化的程序设计方法。高级语言更为流行,如Basic、Pascal等。应用于计算、管理及控制,代表机型IBMSystem/360。方程与解●含有未知数的等式叫做方程● 使方程左右两边相等的未知数的值,叫做方程的解● 未知数个数多于方程个数的方程或方程组,叫做不定方程● 不定方程的特点:可能有无数个解例如,不定方程5*x+y=20 在正整数范围内的解有:x=1, y=15x=2, y=10x=3, y= 5用枚举法求解不定方程购买方案● 问题:妈妈给了小明100元钱,如果一只鸡卖2元,一只兔子卖10元,要求刚好花完妈妈给的所有钱,请问小明一共有几种购买方案?每种方案鸡、兔各几只?● 思路:设鸡买a只,兔子买b只,得到方程2xa + 10xb = 100-------------a + 5xb = 50(a, b=0)根据方程,如果a=0,则b=10。所以,b的取值范围为:0~10。百钱买百鸡● 问题:我国古代数学家在《算经》中有一道题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡,母鸡,小鸡各多少?n钱买m鸡公鸡每只5元钱,母鸡每只3元钱,小鸡3只1元钱。如果用n元钱买m只鸡,问公鸡、母鸡和小鸡可以各买多少只?注意:必须把n元钱正好用完,且买的各种鸡的只数为大于等于0的整数。请聪明的你通过编写程序找出结果。【输入】只有1行,两个数n和m(0n,m = 20000)。【输出】有若干行,每行三个数,分别为公鸡、母鸡和小鸡的只数,用空格隔开,按照公鸡只数升序排列。【输入用例】100 100【输出用例】0 25 754 18 788 11 8112 4 84#includebits/stdc++.husingnamespacestd;intmain(){intn,m,z;cinnm;for(intx=0;x=n/5;x++)//枚举公鸡for(inty=0;y=n/3;y++)//枚举母鸡{z=m-x-y;//根据总数m算出小鸡的只数//判断小鸡是否3的倍数只,并且总价是否n钱if((z=0)(z%3==0)(x*5+y*3+z/3==n))coutx" "y" "zendl;