百鸡百钱解题报告

百鸡百钱问题来源:中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
解题思路:        设鸡翁、鸡母、鸡雏的个数分别为x,y,z,题意给定共100钱要买百鸡,若全买公鸡最多买20只,x的取值范围:0<=x<20;同理,y的取值范围:0<=y<33之间,可得到下面的不定方程:
5x+3y+z/3=100x+y+z=100所以此问题可归结为求这个不定方程的整数解。百度上貌似代码中x的值可以取到20和y的值可以取到33,个人分析后感觉那样是不对的。当x取值20时第一个方程成立,第二个方程就会变成“20=100”,显然这是不对的。当y的取值为33时,解出来x的值为负数,显然这也是不对的。因此我的解题代码如下:
#include<stdio.h>
int main()
{
    int x,y,z,i=0;
    printf("   中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:\n");
    printf("鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?\n");
    for(x=0;x<20;x++)
        for(y=0;y<33;y++)
        {
            z=100-x-y;
            if(z%3==0&&5*x+3*y+z/3==100)
                printf("方案%d:\t翁%2d只\t母%2d只\t雏%2d只\n",++i,x,y,z);
        }
        printf("\n");
    return 0;
}

程序截图:

时间: 2024-12-15 21:08:42

百鸡百钱解题报告的相关文章

百鸡百钱while做法

//百鸡百钱 公鸡2文,母鸡1文,小鸡0.5文 int count = 0; int gong = 0; while (gong<=50) { int mu = 0; while(mu<=100) { int xiao = 0; while(xiao<=200) { if(gong+mu+xiao==100&&2*gong+mu+0.5*xiao==100) { count++; Console.WriteLine("第"+count+"种组

百鸡百钱

//百鸡百钱 ,公鸡2文钱一只,母鸡1文钱一只,小鸡半文钱一只 //共有100文钱,如何在凑够100只鸡的情况下刚好花完100文钱 int count = 0; int bian = 0; for (int gong = 0; gong <= 50;gong++ ) { for (int mu = 0; mu <= 100;mu++ ) { for (int xiao = 0; xiao <= 200;xiao++ ) { bian++; if(gong+mu+xiao==100&

for循环语句之棋盘放粮食、百鸡百钱、纸张的折叠问题

1.棋盘放粮食 int lszl = 1; for (int i = 1; i < 30; i++) { int x = 1; for (int j = 1; j <= i; j++) { x = x * 2; } lszl = lszl + x; } double zl = lszl * 0.001; Console.WriteLine("放满整个棋盘所需要:" + zl + "kg的粮食"); 2.百鸡百钱 for (int i = 1; i <

1. while循环(当循环) 2. do{}while()循环 3. switch cose(多选一) 例子:当选循环下求百鸡百钱 用 switch cose人机剪刀石头布

1. while循环: 当选循环下求百鸡百钱:如下: 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><me

百鸡百钱问题解答

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44084963 http://www.llwjy.com/blogd.php?id=f6c0ce9433483f0ee178e15ac5d2ff6a 个人的博客小站也搭建成功,网址:www.llwjy.com ,欢迎大家来吐槽~ 一个很有趣的数学问题"百鸡百钱",该问题出自我国古代数学家张丘建<算经>,其中是这样描述的"鸡翁一值钱五,鸡母一值钱三,

百鸡白钱

package jt15006.u1_1.ch3; public class Baijibaiqian { public static void main(String[] args) { /* * 百鸡百钱 * 公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱, * 如果用100文钱买100只鸡, 那么公鸡.母鸡和小鸡各应该有多少只 */ int money = 100; int count = 100; // i为公鸡数量 for (int i = 0; i <= count; i++) {

百鸡百钱问题

描述    我国古代数学家张丘建在<算经>一书中提出的数学问题:        鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一.        百钱买百鸡,问鸡翁.鸡母.鸡雏各几何?    输入        输出    鸡翁数量    鸡母数量    鸡雏数量 public class Main {     public static void main(String[] args){                  for (int i = 1; i <= 20; i++) {     

趣味方程之百鸡百钱

大家想必都知道这个问题,问题在这里就不描述了.直接分析: 如果用数学的思想来解决这个问题,设公鸡x只,母鸡y只,小鸡z只. 5*x+3*y+z/3 = 100 x+y+z=100 但看这个方程有无数的解,其实里面隐藏着一个x,y,z都是正整数,因此解决这个方法用穷举. 确定程序的框架: 我们编写一个方法用于计算m钱买n鸡问题 package 百钱百鸡; public class Main { public static void main(String[] args) { int m,n; m

C语言百鸡百钱问题!

#include <stdio.h> int main (void){  int a,b,c;  for(a=0;a<=100;a++)   for(b=0;b<=100;b++){    c=100-a-b;    if(15*a+9*b+c==300)    printf("鸡公数是:%-8d;母鸡数是:%-8d;幼鸡数是:%-8d\n",a,b,c);   }}