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

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.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值