我想大家没理解楼主的意思,每个字母代表一个十进制数字,程序要求的是EGAL每个字母代表的值,我的做法是:
EGAL*L=LGAE
左边可以表示为:
E*L*(10+3E)+G*L*(10+2E)+A*L*(10+1E)+L*L*(10+0E)
右边可以表示为:
L*(10+3E)+G*(10+2E)+A*(10+1E)+E*(10+0E)
左边减去右边为:
(E*L-L)*(10+3E) + (G*L-G)*(10+2E) + (A*L-A)*(10+1E) + (L*L-E)*(10+0E) = 0
所以:
E*L-L = 0
G*L-G = 0
A*L-A = 0
L*L-E = 0
L = E = 1; G = A = [1-9];
这是数学解法,如果C编程解的话,最简单的方法是穷举法,把A,E,G,L是个代表的数字从0到9(有些不能为0) 循环,如果式子相等就是解之一。
LGAE = EGAL * L
对啊,赋值运算符的左边只能是个变量,不能是表达式也不能是常量,比如:5=EGAL * L也同样错误~!~!~
#include
void main()
{
int L ,G, A ,E ;
for(L=1;L<10;L++)
for(G=0;G<10;G++)
for(A=0;A<10;A++)
for(E=1;E<10;E++)
{
if((E*1000+G*100+A*10+L)*L==(L*1000+G*100+A*10+E))
printf("\nE--%d G--%d A--%d L--%d",E,G,A,L);
}
getchar();
}
......
int
minute1
=
time1
%
100;
int
hour1
=
time1
/
100;
int
minute2
=
time2
%
100;
int
hour2
=
time2
/
100;
if(minute1
<
minute2){
hour1
-=1;
minute1
+=
60;
}
minutes
=
minute1
-
minute2;
hour
=
hour1
-
hour2;
......
#include
void
main()
{
int
L
,G,
A
,E
;
for(L=1;L<10;L++)
for(G=0;G<10;G++)
for(A=0;A<10;A++)
for(E=1;E<10;E++)
{
if((E*1000+G*100+A*10+L)*L==(L*1000+G*100+A*10+E))
printf("\nE--%d
G--%d
A--%d
L--%d",E,G,A,L);
}
getchar();
}