제출 #920813

#제출 시각아이디문제언어결과실행 시간메모리
920813Faisal_SaqibToys (CEOI18_toy)C++17
100 / 100
893 ms22224 KiB
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
map<int,vector<int>> mp;
void pos(long long&x)
{
    auto it=mp.find(x);
    if(it!=mp.end())
        return;
    vector<int> cur={x-1};
    for(long long d=2;(d*d)<=x;d++)
    {
        if(x%d==0)
        {
            long long rem=x/d;
            pos(rem);
            for(auto&j:mp[rem])
                cur.push_back(j+(d-1));
            if((d*d)!=x)
            {
                d=x/d;
                long long rem=x/d;
                pos(rem);
                for(auto&j:mp[rem])
                    cur.push_back(j+(d-1));                
                d=x/d;
            }
        }
    }
    sort(begin(cur),end(cur));
    cur.resize(unique(begin(cur),end(cur))-begin(cur));
    mp[x]=cur;
}
int main()
{
    cin.tie(0);
    cout.tie(0);
    ios::sync_with_stdio(0);
    long long n;
    cin>>n;
    pos(n);
    auto tlp=mp[n];
    cout<<tlp.size()<<endl;
    for(auto j:tlp)
    {
        cout<<j<<' ';
    }
    cout<<endl;
}

컴파일 시 표준 에러 (stderr) 메시지

toy.cpp: In function 'void pos(long long int&)':
toy.cpp:12:23: warning: narrowing conversion of '(x - 1)' from 'long long int' to 'int' [-Wnarrowing]
   12 |     vector<int> cur={x-1};
      |                      ~^~
toy.cpp:12:23: warning: narrowing conversion of '(x - 1)' from 'long long int' to 'int' [-Wnarrowing]
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...