【2016东莞信息特长生】子数整数

本文探讨了一个特定的数学问题,即找出10000到30000之间的五位数,这些五位数可以被拆分成三个三位数的子数,并且每个子数都能被给定的整数K整除。提供了一个简单的程序实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述
对于一个五位数 a1a2a3a4a5,可将其拆分为三个子数: sub1=a1a2a3
sub2=a2a3a4
sub3=a3a4a5
例如,五位数 20207 可以拆分成 sub1=202 sub2=020(=20) sub3=207
现在给定一个正整数 K,要求你编程求出 10000(包括 10000)到 30000(包括 30000)之间所有满足下述条件的五位数,条件是这些五位数的三个子数 sub1,sub2,sub3 都可被 K 整除。
样例输入
15
样例输出
22555
25555
28555
30000
算法讨论
水题,暴力。

var
  i,j,n,m,s:longint;
  st,st1:string;
  f,flag:boolean;
begin
  assign(input,'num.in'); reset(input);
  assign(output,'num.out'); rewrite(output);
  read(n);
  m:=10000;
  while m<=30000 do
    begin
      f:=false;
      str(m,st);
      for i:=1 to 3 do
        begin
          st1:='';
          for j:=i to i+2 do
            st1:=st1+st[j];
          val(st1,s);
          if s mod n=0
            then f:=true
            else begin
                   f:=false;
                   break
                 end
        end;
      if f
        then begin
               writeln(st);
               flag:=true
             end;
      inc(m)
    end;
  if flag=false
    then write(-1);
  close(input); close(output)
end.

这里写图片描述
Pixiv ID:53183696

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值