练习: 水仙花数、百钱白鸡、百马百担
题目一:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
int a=0;
for(int g=0;g<10;g++) //穷举各位
{
for(int s=0;s<10;s++) //穷举十位
{
for(int b=1;b<10;b++) //穷举百位
{
a=g+s*10+b*100;
if(g*g*g+s*s*s+b*b*b==a) //满足水仙花数条件
{
System.out.println("a="+a);
}
}
}
}
题目二:我国古代数学家张邱建在《算经》中出了一道“百钱买百鸡”的问题,题意是这样的:
5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡。
现在用100文钱买100只鸡,那么各有公鸡、母鸡、雏鸡多少只?请编写程序实现。
方法1:
for(int g=0;g<20;g++)
{
for(int m=0;m<33;m++)
{
if((g*5+m*3+(100-g-m)/3==100)&&(100-g-m)%3==0)
{
System.out.println
("公鸡"+g+"只"+g*5+"钱\t"+
"母鸡"+m+"只"+m*3+"钱\t"+
"雏鸡"+(100-g-m)+"只"+(100-g-m)/3+"钱");
}
}
}
方法2:
for(int g=0;g<20;g++)
{
for(int m=0;m<33;m++)
{
for(int c=0;c<100;c+=3)
{
if((g*5+m*3+c/3==100)&(g+m+c==100))
{
System.out.println
("公鸡"+g+"只"+g*5+"钱,"+
"母鸡"+m+"只"+m*3+"钱,"+
"雏鸡"+c+"只"+c/3+"钱");
}
}
}
}
题目三:这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,
问有大,中,小马各几匹?
for(int d=0;d<33;d++)
{
for(int z=0;z<50;z++)
{
for(int x=0;x<100;x+=2)
{
if(d*3+z*2+x/2==100 & d+z+x==100)
{
System.out.println
("大马"+d+"匹驮"+d*3+"担货,"+
"中马"+z+"匹驮"+z*2+"担货,"+
"小马"+x+"匹驮"+x/2+"担货");
}
}
}
}