2016东莞市特长生考试 子数整数

来源:互联网 发布:php h5 微信支付接口 编辑:程序博客网 时间:2024/05/17 03:59

2016东莞市特长生考试 子数整数

Time Limit:10000MS  Memory Limit:256000K
Total Submit:4 Accepted:3 
Case Time Limit:1000MS

Description

对于一个五位数 a1a2a3a4a5,可将其拆分为三个子数: sub1=a1a2a3 

sub2=a2a3a4 

sub3=a3a4a5 

例如,五位数 20207 可以拆分成 sub1=202 

sub2=020(=20) sub3=207 


现在给定一个正整数 K,要求你编程求出 10000(包括 10000)到 30000(包括 30000)之间所有满足下述条件的五位数,条件是这些五位数的三个子数 sub1,sub2,sub3 都可被 K 整除。

Input

从文件 num.in 输入,输入仅一行,为正整数 K(0<k<1000)。< font="">

Output

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


分析:标记1000以内k的倍数然后枚举判断就行了。


代码

const
  maxn=1000;
var
  f:array[0..maxn] of boolean;
  i,j,k,n:longint;
  fl:boolean;


function check(x:longint):boolean;
var
  s,st:string;
  p:longint;
begin
  check:=true;
  str(x,s);
  st:=s[1]+s[2]+s[3];
  val(st,p);
  if not f[p] then exit(false);
  st:=s[2]+s[3]+s[4];
  val(st,p);
  if not f[p] then exit(false);
  st:=s[3]+s[4]+s[5];
  val(st,p);
  if not f[p] then exit(false);
end;


begin
  //assign(input,'num.in');reset(input);
  //assign(output,'num.out');rewrite(output);
  readln(n);
  k:=n;
  f[0]:=true;
  while k<1000 do
    begin
      f[k]:=true;
      k:=k+n;
    end;
  for i:=10000 to 30000 do
    if check(i) then
      begin
        writeln(i);
        fl:=true;
      end;
  if not fl then writeln(-1);
  //close(input);close(output);
end.


0 0