我国古代数学家张邱建在《算经》中出了一道“百钱买白鸡”的问题,题意是这样的:5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。

 



//百钱白鸡            
    
            for(int cock =0;cock<21;cock++ )      //公鸡cock循环条件,最多20只
                for(int hen =0;hen<34;hen++){       //母鸡hen循环条件,最多33只
                    for(int chick =0;chick<101;chick+=3){    //雏鸡chick循环条件,最多100只,每次循环+3
                        if((cock+hen+chick)== 100 && (cock*5+hen*3+chick/3)==100)  //要同时满足百钱白鸡
                        System.out.println("用100文钱买100只鸡,公鸡:"+cock+"只 "+" 母鸡"+hen+"只 "+" 雏鸡"+chick+"只");
                            }



 

python百钱买百鸡2 python百钱买百鸡(穷举)_python百钱买百鸡2

 

错误示范:    注意!题中是一文钱3只雏鸡



int cock =5;int hen =3;int chick =1;
            for(int t =0; t<100;t+=9 ){
                cock+=5;
                hen+=3;
                chick++;
                t =cock+hen+chick;
                System.out.println("公鸡:"+cock+"只 "+" 母鸡"+hen+"只 "+" 雏鸡"+chick+"只");
                System.out.println("要花费"+t+"钱");
                if(t==99){
                    chick++;
                }
            }            
            System.out.println("用100文钱买100只鸡,公鸡:"+cock+"只 "+" 母鸡"+hen+"只 "+" 雏鸡"+chick+"只");



 

 

 

题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。



int a =1;
            for(int y =1;y<=9;y++){
                for(int e =0;e<=9;e++){
                    for(int s =0;s<=9;s++){
                        if ((y*y*y+e*e*e+s*s*s)==(y*100+e*10+s*1)){
                    a++;
                    System.out.println("水仙花数第"+a+"个是"+(y*100+e*10+s));

                        }
                    }
                }
            }



 

python百钱买百鸡2 python百钱买百鸡(穷举)_python百钱买百鸡2_02

修改后正确做法:



for(int a=1;a<=9;a++)            //百位上的数的循环条件
            for(int b=0;b<=9;b++)         //十位上的数的循环条件
                for(int c=0;c<=9;c++){        //个位上的数的循环条件
                    int m=(a*100+b*10+c);      //定义m=循环条件产生的某个三位数
                        int    n=(a*a*a+b*b*b+c*c*c);   //定义n=循环条件产生的各个数的立方和
                        if(m!=n)                //当m!=n的值,表示该数不是水仙花数
                            continue;          //进行下一次循环
                        /*
                         * 也可以写  if(m==n) 直接输出m或者n的值
                         */
                        System.out.println("水仙花数有:"+m);
                }



 

python百钱买百鸡2 python百钱买百鸡(穷举)_小马_03



这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?


//第一种方法:    
    for(int x=1;x<100;x++){            //大马x获取从1~100的数
                for(int y=1;y<100;y++){        //中马 y
                    int z=100-x-y;             //小马z变量
                    if(z%2==0){                  //z值要为偶数,2只小马驼一担
                        if((3*x+2*y+z/2)==100){    //大马+中马+小马驼货的和
                            System.out.println("百马百担:大马"+x+"中马"+y+"小马"+z);
                        }
                    }
                }
            }
  //第二种方法:          
            for(int i=0;i<34;i++)               //大马最多33匹 
                for(int j=0;j<51;j++)           //中马最多50匹 
                    for(int k=0;k<101;k+=2)      //小马驹最多100匹 
                    { 
                    if ((i*3+j*2+k/2)==100 & (i+j+k)==100) //判断货物的数量和马的数量,是否=100 
                    System.out.println("百马百担,大马"+i+"匹,中马"+j+"匹,小马"+k+"匹。" ); 
                    }

 

python百钱买百鸡2 python百钱买百鸡(穷举)_小马_04

 


//错误示范:不要理解错题意
int dm =3;int zm =2;int xm =1;
            for(int hw =0;hw <=100;hw +=6){
                dm +=3;
                zm +=2;
                xm ++;
                hw = dm+zm+xm;
                System.out.println("大马"+dm+"中马"+zm+"小马"+xm);
                System.out.println("货物"+hw);
            }