现在给定一个正整数 K,要求你编程求出 10000 到 30000 之间所有满足下述条件的五位数,条件是这些五位数的三个子数 sub1,sub2,sub3 都可被 K 整除。
输入格式
一个正整数 K。
输出格式
每一行为一个满足条件的五位数,要求从小到大输出。不得重复输出或遗漏。如果无解,则输出 No。
样例 #1
样例输入 #1
1
15
样例输出 #1
1 2 3 4
22555 25555 28555 30000
提示
0<K<1000
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
k = int(input()) count = 0 for i inrange(10000, 30001): w = i // 10000 q = (i - 10000 * w) // 1000 b = (i - 10000 * w - 1000 * q) // 100 s = (i - 10000 * w - 1000 * q - 100 * b) // 10 g = i - 10000 * w - 1000 * q - 100 * b - 10 * s sub1 = 100 * w + 10 * q + 1 * b sub2 = 100 * q + 10 * b + 1 * s sub3 = 100 * b + 10 * s + 1 * g if (sub1 % k == 0) and (sub2 % k == 0) and (sub3 % k == 0): print(i, end="\n") count = 1 if count == 0: print("No")
代码其实还可以优化,把 qbsg 的计算方法改一下
1 2 3 4
q = (i % 10000) // 1000 b = (i % 1000) // 100 s = (i % 100) // 10 g = i % 10
题解解释
来自 ChatGPT
这段代码的作用是寻找在范围 [10000, 30000] 内的所有满足特定条件的五位数。根据题目描述,这些五位数可以被拆分为三个子数 sub1, sub2, sub3,而且这三个子数都能被输入的整数 K 整除。