free pascal方格填数(速进,下图中有4行方格,这10个格子中填入0~9这10个不同的数字,每行构成一个自然数,组成4个位数各不相同的自然数,已知这4个自然数都是某个整数的平方,求出所有的填写方案
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 09:06:20
free pascal方格填数(速进,下图中有4行方格,这10个格子中填入0~9这10个不同的数字,每行构成一个自然数,组成4个位数各不相同的自然数,已知这4个自然数都是某个整数的平方,求出所有的填写方案
free pascal方格填数(速进,
下图中有4行方格,这10个格子中填入0~9这10个不同的数字,每行构成一个自然数,组成4个位数各不相同的自然数,已知这4个自然数都是某个整数的平方,求出所有的填写方案.一种可行的方案:9,81,324,7056.
图
【输出文件】 输出文件nmber.out文件包括若干行,每一行为一种可行的方案,包括四个整数,整数之间用一个空格分隔,最后一个数据后无空格.【输出样例】输出数据中的一行示例为:9 81 324 7056
free pascal方格填数(速进,下图中有4行方格,这10个格子中填入0~9这10个不同的数字,每行构成一个自然数,组成4个位数各不相同的自然数,已知这4个自然数都是某个整数的平方,求出所有的填写方案
var
i,j,k,m,n,a1,a2,a3,a4,a11,a22,a33,a44,s:longint;
a:array[1..10] of longint;b1:boolean;
b:array[0..9] of boolean;
begin
for a11:=1 to 3 do
for a22:=4 to 9 do
for a33:=13 to 31 do
for a44:=32 to 99 do
begin
fillchar(b,sizeof(b),false);
a1:=a11*a11;
a2:=a22*a22;
a3:=a33*a33;
a4:=a44*a44;
a[1]:=a1;{分解数字}
a[2]:=a2 div 10;
a[3]:=a2 mod 10;
a[4]:=a3 div 100;
a[5]:=a3 mod 100 div 10;
a[6]:=a3 mod 10;
a[7]:=a4 div 1000;
a[8]:=a4 mod 1000 div 100;
a[9]:=a4 mod 100 div 10;
a[10]:=a4 mod 10;{分解完毕}
b1:=true;{布尔变量初赋值}
for i:=1 to 10 do
if not b[a[i]] then b[a[i]]:=true{a[i]是填入方格的数,如果未填入,就设为已填入}
else b1:=false;{填入就把临时变量设为false(有重复)}
if b1 then writeln(a1,' ',a2,' ',a3,' ',a4);{如果没重复过就输出}
end;
end.