洛谷 P1151 子数整数 题解

看了下题解好像没人是和我类似的做法哎

# 前言

这道入门题确实是入门的难度了,之前那个 1089 真有点难啊。

# 题目描述

对于一个五位数 $\overline{a_1a_2a_3a_4a_5}$,可将其拆分为三个子数:

$sub_1=\overline{a_1a_2a_3}$

$sub_2=\overline{a_2a_3a_4}$

$sub_3=\overline{a_3a_4a_5}$

例如,五位数 $20207$ 可以拆分成

$sub_1=202$

$sub_2=020\ (=20)$

$sub_3=207$

现在给定一个正整数 $K$,要求你编程求出 $10000$ 到 $30000$ 之间所有满足下述条件的五位数,条件是这些五位数的三个子数 $sub_1,sub_2,sub_3$ 都可被 $K$ 整除。

# 输入格式

一个正整数 $K$。

# 输出格式

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

# 样例 #1

# 样例输入 #1

1
15

# 样例输出 #1

1
2
3
4
22555
25555
28555
30000

# 提示

$0<K<1000$

# 题解

这道题的题解似乎都是使用除法来获取子数的,我做法不太一样,直接将数字转为 string 然后裁剪得到需要的子数。

数还是很简单的使用 for 循环产生。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
k = int(input())
flag = True

for i in range(10000,30001):
    num = str(i)
    sub_1 = num[:3]
    sub_2 = num[1:4]
    sub_3 = num[2:]

    if int(sub_1) % k == 0 and int(sub_2) % k == 0 and int(sub_3) % k == 0:
        print(i)
        flag = False
    else:
        continue

if flag:
    print("No")
使用 Hugo 构建
主题 StackJimmy 设计