用pascal求一个数,这个数是11的倍数,百位数加十位数等于千位数,并且百位数加十位数是完全平方数.
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/01 08:09:18
用pascal求一个数,这个数是11的倍数,百位数加十位数等于千位数,并且百位数加十位数是完全平方数.
用pascal求一个数,这个数是11的倍数,百位数加十位数等于千位数,并且百位数加十位数是完全平方数.
用pascal求一个数,这个数是11的倍数,百位数加十位数等于千位数,并且百位数加十位数是完全平方数.
这不难
var
i:integer;
begin
for i:=1000 to 9999 do
begin
if (i mod 11=0) and ((i div 1000)=(i mod 1000 div 100)+(i mod 100 div 10)) and (sqrt(i mod 100 div 10+i mod 1000 div 100)=trunc(sqrt(i mod 100 div 10+i mod 1000 div 100))) then write(i,' ');
end;
end.
结果:1012 1100 4048 4136 4224 4312 4400 9097 9185 9273 9361 9548 9636 9724 9812 9900
4,5,8 12,16,24 15,30,60 14,28,42 就这四个数组没过直接给答案或者给程序也行。 1 40 4 48 15 60 14 84 需要源程序再通知我
楼上正解。
不过完全可以优化一下:
1)这个数为11的倍数,所以可以从1001开始,每次加11。这样可以减少判断次数。
2)百位数加十位数等于千位数,并且百位数加十位数是完全平方数。所以千位数只能是1、4、9。可以进一步缩小搜索的范围。
var
i:integer;
begin
i:=1001;
while i <= 19...
全部展开
楼上正解。
不过完全可以优化一下:
1)这个数为11的倍数,所以可以从1001开始,每次加11。这样可以减少判断次数。
2)百位数加十位数等于千位数,并且百位数加十位数是完全平方数。所以千位数只能是1、4、9。可以进一步缩小搜索的范围。
var
i:integer;
begin
i:=1001;
while i <= 1991 do
begin
if (i div 1000)=(i mod 1000 div 100)+(i mod 100 div 10) then write(i,' ');
i := i + 11;
end;
i:=4004;
while i <= 4994 do
begin
if (i div 1000)=(i mod 1000 div 100)+(i mod 100 div 10) then write(i,' ');
i := i + 11;
end;
i:=9009;
while i <= 9999 do
begin
if (i div 1000)=(i mod 1000 div 100)+(i mod 100 div 10) then write(i,' ');
i := i + 11;
end;
end.
收起