1 solutions

  • 0
    @ 2025-4-22 16:35:25

    从最高位填写数字,如果填写到目前为止不满足题意退出递归,否则直到填写到对应的 nn 位,判断是否在给定的区间 [a,b][a,b]里面,是则记录答案

    #include <iostream>
    #include <set>
    #define int long long
    using namespace std;
    int a, b, n;
    set<int> se;
    void dfs(int x, int len)
    {
        if (x % len != 0)
            return;
        if (len == n)
        {
            if (x <= b && x >= a)
            {
                se.insert(x);
            }
            return;
        }
        for (int i = 0; i < 10; ++i)
        {
            dfs(x * 10 + i, len + 1);
        }
    }
    signed main()
    {
        cin >> n >> a >> b;
        for (int i = 1; i <= 9; i++)
            dfs(i, 1);
        for (const auto &x : se)
        {
            cout << x << '\n';
        }
    }
    
    • 1

    Information

    ID
    1460
    Time
    2000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    # Submissions
    57
    Accepted
    22
    Uploaded By