你没有限制位数,会有无数个结果的
如果限制ac都是不超过3位,算法如下,未及细想,你找这样的算法玩啊?
for i:=0 to 999
for j:=0 to 999
for k:=0 to length(i)
for l:=0 to length(j)
begin
if copy(inttostr(i),k,1)=copy(inttostr(j),l,1) then
continue;
for m:=0 to length(i*j)
begin
if copy(inttostr(i*j),m,1)=copy(inttostr(i),k,1) then
continue;
if copy(inttostr(i*j),m,1)=copy(inttostr(j),l,1) then
continue;
write(i,i*j,j);
end;
根据楼上所说,我想可以就这样做了,本人delphi语法还不是很精通,你们凑合看吧
定义一个10*10的整形数组后里面存放0~9这10个数的全排列后
for i:=1 to 10do
if a[6]*10000+a[7]*1000+a[8]*100+a[9]*10+a[10]=a[1]*(a[2]*1000+a[3]*100+a[4]*10+a[5])
then
print(a[1],"*",(a[2]*1000+a[3]*100+a[4]*10,"=",a[6]*10000+a[7]*1000+a[8]*100+a[9]*10+a[10]=);
是不是有点乱呀,我刚学帮帮忙
copy是取子字符串的函数,copy('123',2,1)取‘2’
如果限制ABC三个数总位数只能是十位,用我前面的循环也行,再加一个判断就可以以
if length(inttostr(i))+length(inttostr(j))+length(inttostr(k))<>10 then
continue