1 条题解

  • 0
    @ 2024-3-10 18:01:04
    #include <vector>
    using namespace std;
    vector<int>vec;
    int N,ans,aa;
    
    int dfs(int n)
    {
        int a = 1;
        for (int i = 2;i <= n / 2;i++)
        {
            if (n % i == 0)
            {
                vec.push_back(i);
                a += dfs(n / i);
                vec.pop_back();
            }
        }
        int s = N;
        for (int i = 0;i < vec.size();i++)
        {
            s /= vec[i];
        }
        vec.push_back(s);
        for (int i = 1;i < vec.size();i++)
        {
            if (vec[i] < vec[i - 1])
            {
                ans++;
                break;
            }
        }
        vec.pop_back();
        return a;
    }
    
    int main()
    {
        cin >> N;
        cout << dfs(N) - ans;
    }
    
    • 1

    信息

    ID
    3066
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    21
    已通过
    0
    上传者