답안 #679133

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

typedef long long ll;

using namespace std;

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

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

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

void gen(ll k){

    //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(mult*i<=n&&n%(mult*i)==0){
            sum+=i-1;
            mult*=i;
            gen(k+1);
            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);,
        }
    }

    gen(0);

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

    return 0;
}

Compilation message

toy.cpp: In function 'int main()':
toy.cpp:55:13: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   55 |             if(n/i!=i)divv.push_back(n/i);,
      |             ^~
toy.cpp:55:43: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   55 |             if(n/i!=i)divv.push_back(n/i);,
      |                                           ^
toy.cpp:55:43: error: expected primary-expression before ',' token
toy.cpp:56:9: error: expected primary-expression before '}' token
   56 |         }
      |         ^