我国古代数学家张邱建在《算经》中出了一道“百钱买白鸡”的问题,题意是这样的: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);
}