昨天看报纸说有一位妈妈因为一道小学3年级的数学题而苦恼,题目是这样的通过等式:红花映绿叶x春=叶绿映花红(x为乘号)算出这6个字分别代表了哪6个数字。这是一个孩子问妈妈的问题,结果妈妈和孩子一样被其难住了,伴随着和其他家长讨论的同时她也在网上发了帖子,以求正解。
回首我小学时,貌似这种题顶多会出现在奥赛,而以我3年级的智力,估计是无能为力了,囧rz。今天看到了这题,就偷懒用java写个小程序让计算机去做吧,呵呵。希望结果能对那位母亲有所帮助。将题目换成代数式为:abcde*f=edcba,就是求出符合这个式子的数字。代码如下:
class Compute
{
public static void main(String[]args)
{
Compute com=new
Compute();
String[] a=new String[5];
for(int i=2;i<10;i++)
{
for(int
j1=1;j1<10;j1++)
{
for(int
j2=0;j2<10;j2++)
{
for(int
j3=0;j3<10;j3++)
{
for(int
j4=0;j4<10;j4++)
{
for(int
j5=0;j5<10;j5++)
{
if(com.isEqual(i,j1,j2,j3,j4,j5))
{
a[0]=String.valueOf(j1);
a[1]=String.valueOf(j2);
a[2]=String.valueOf(j3);
a[3]=String.valueOf(j4);
a[4]=String.valueOf(j5);
int m=Integer.parseInt(a[0]+a[1]+a[2]+a[3]+a[4]);
int n=Integer.parseInt(a[4]+a[3]+a[2]+a[1]+a[0]);
int x=i;
if(m*x==n)
{
System.out.println("红花映绿叶x春=叶绿映花红"+"\n"+m+"x"+x+"="+n);
break;
}
}
}
}
}
}
}
}
}
boolean isEqual(int a,int
b,int c,int d,int e,int f)
{
int[] shu={a,b,c,d,e,f};
int count=6;
for(int i=0;i<5;i++)
{
for(int
j=1;j<count;j++)
{
if(shu[i]==shu[i+j])
{
return
false;
}
}
count--;
}
return true;
}
}
最后的执行结果是:(红色部分)
红花映绿叶x春=叶绿映花红
21978x4=87912
即红代表2,花代表1,映代表9,绿代表7,叶代表8,春代表4。
当然作为一个小学生来说,也可以逐步地推理求解:
1:对于abcde*f=edcba,首先f不等于1,因为符合要求的最小5位数12345*9的结果是6位数,所以a*f<9。
2:如果a=1,那么e,f就在3和7之中出结果,但是无论是e=3,f=7还是e=7,f=3带入式子都会产生矛盾。所以a不等于1。
3:若a=2,则符合条件的f只有4;a=3,f=2;a=4,f=2;所以a和f的值就在2,3,4这三个数之间。
2:如果f为3,a和e只能是2和4,结果错误,所以a和f只能是2和4。
3:如果f是2,那么a只能是4,e就是7,结果也错误,所以f只能是4,由此确定了f=4。
4:由f=4推出a=2,e=8。因为b*f必须小于10,因为f是4,a是2,所以b只能是1。再看d,因为f*d+3尾数是1,所以d是7,再看c,因为c*f+3尾数还是c,所以c只能是9。
最后的结果同上:21978*4=87912
也许现在的小学生都越来越聪明了,但是我个人感觉这些题对于小学生来说确实有些过,而且是小学3年级的学生,即使有个别学生算出了结果,也有相当的可能性是以牺牲他们的课余生活为代价的。其实相比这些学生思考这些题以提高智力的过程,那些出题者如何设计出一些适合学生们的题,对于出题者本身也是一种智力的锻炼。
加载中,请稍候......