답안 #679144

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
679144 2023-01-07T14:53:02 Z Kipras Toys (CEOI18_toy) C++17
0 / 100
0 ms 212 KB
#include <bits/stdc++.h>

typedef long long ll;

using namespace std;

ll sum = 0;
ll mult=0;
ll n;

set<ll> res;
vector<ll> divv;

map<pair<ll, ll>, bool> hasBeen;

void gen(ll last){

    //cout<<k<<" "<<sum<<" "<<mult<<endl;

    if(hasBeen[{mult, sum}]){
        return;
    }

    hasBeen[{mult, sum}]=1;

    if(mult==n){
        res.insert(sum);
        return;
    }

    for(auto i : divv){
        //cout<<i<<" "<<mult*i<<" "<<n%(mult*i)<<endl;
        if(i<last)continue;
        if(mult%i==0){
            sum+=i-1;
            mult/=i;
            gen(i);
            sum-=i-1;
            mult*=i;
        }
    }


}

int main()
{

    ios_base::sync_with_stdio(0);cin.tie(nullptr);

    cin>>n;

    for(int i = 1; i*i <= n; i++){
        if(n%i==0){
            divv.push_back(i);
            if(n/i!=i)divv.push_back(n/i);
        }
    }

    mult=n;

    gen(0);

    cout<<res.size()<<"\n";
    for(auto i : res){
        cout<<i<<" ";
    }

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -