子数整数PASCAL

来源:百度知道 编辑:UC知道 时间:2024/06/02 10:24:55
Description

对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:
sub1=a1a2a3
sub2=a2a3a4
sub3=a3a4a5
例如,五位数20207可以拆分成
sub1=202
sub2=020(=20)
sub3=207
现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,条件是这些五位数的三个子数sub1,sub2,sub3都可被K整除。

Input

输入由键盘输入,输入仅一行,为正整数K(0

Output

输出到文件,输出文件的每一行为一个满足条件的五位数,要求从小到大输出。不得重复输出或遗漏。如果无解,则输出“No”。

楼上,题目只输入了k
var
i,a,b,c,k,j:integer;
begin
readln(k);
j:=0;
for i:=10000 to 30000 do begin
a:=i mod 1000;
b:=i div 100;
c:=(i mod 10000)div 10;
if (a mod k=0)and(b mod k=0)and(c mod k =0) then begin
writeln(i);
inc(j);
end;
end;
if j=0 then writeln("No.")
end.

另外,文件这样输入输出比较方便:
assign(input,"输入文件名");reset(input);
assign(output,"输出文件名");rewrite(output);
代码
close(input);close(output);

由于你的输入文件输出文件的名称没告诉我,所以被定义在开始的常量区。请自己修改。
const
inputfile ='zszsin.txt';
outputfile='zszsout.txt';
var
f:text;
k:integer;
i:integer;
l:boolean;
begin
assign(f,inputfile);reset(f);
read(f,k);close(f);
l:=false;
assign(f,outputfile);rewrite(f);
for i:=10000 to 30000 do
if (i div 100 mod k=0) and (i div 10 mod 1000 mod k=0)
and (i mod 1000 m