#P166. 子数整除

子数整除

对于一个五位数 a1ˉa2ˉa3ˉa4ˉa5ˉ\bar{a_1}\bar{a_2}\bar{a_3}\bar{a_4}\bar{a_5}​,可将其拆分为三个子数:

sub1=a1ˉa2ˉa3ˉsub1=\bar{a_1}\bar{a_2}\bar{a_3}​

sub2=a2ˉa3ˉa4ˉsub2=\bar{a_2}\bar{a_3}\bar{a_4}​

sub31=a3ˉa4ˉa5ˉsub31=\bar{a_3}\bar{a_4}\bar{a_5}​

​ 例如,五位数 2020720207 可以拆分成

sub1=202sub1=202

sub2=020(=20)sub2=020(=20)

sub3=207sub3=207

现在给定一个正整数 kk,要求你编程求出 10000100003000030000 之间所有满足下述条件的五位数,条件是这些五位数的三个子数 sub1,sub2,sub3sub1,sub2,sub3 都可被 kk 整除。

下面是初始化代码,其中需要添加代码的地方已经使用注释标出。

#include <iostream>
using namespace std;
int main() {
    freopen("divide.in", "r", stdin);
    freopen("divide.out", "w", stdout);
    int k;
    cin >> k;
    bool ok = false;
    for (int i = 10000; i <= 30000; i++) {
        int a = /*这里需要添加合适的代码*/;
        int b = /*这里需要添加合适的代码*/;
        int c = /*这里需要添加合适的代码*/;
        if (a % k == 0 && b % k == 0 && c % k == 0) {
            ok = true;
            cout << i << endl;
        }
    }
    if (/*这里需要添加合适的代码*/) {
        puts("No");
    }
    return 0;
}

输入格式

一个整数 k(0<k<1000)k (0<k<1000)

输出格式

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

输出时每行末尾的多余空格,不影响答案正确性

要求使用「文件输入输出」的方式解题,输入文件为 divide.in,输出文件为 divide.out

样例输入1

21

样例输出1

25252
27357

样例输入2

22

样例输出2

No