我国古代数学家张邱建在《算经》中出了一道“百钱买白鸡”的问题,题意是这样的: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+"只");
}
错误示范: 注意!题中是一文钱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)); } } } }
修改后正确做法:
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);
}
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮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+"匹。" ); }
//错误示范:不要理解错题意
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); }