Submission #1226846

#TimeUsernameProblemLanguageResultExecution timeMemory
1226846MalixToys (CEOI18_toy)C++20
39 / 100
5093 ms56332 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vii; typedef pair<int,int> pi; typedef vector<pi> pii; typedef tuple<int,int,int> ti; typedef vector<ll> li; typedef vector<li> lii; #define REP(i,a,b) for(int i=a;i<b;i++) #define F first #define S second #define PB push_back #define LSOne(s) ((s)&(-s)) #define all(x) (x).begin(),(x).end() ll INF=1000000000000000010; int inf=1e9+10; ll M=1e9+7; int n; map<ll,int> mp; map<int,vi> fac; int solve(int x,int y){ ll a=((ll)x*(ll)n)+(ll)y; if(y+1==x)return 2; if(y<=0||x<=1)return 1; if(mp[a]!=0)return mp[a]; if(fac[x].empty()){ int k=sqrt(x)+1; REP(i,2,k)if(x%i==0){ fac[x].PB(i); if(i*i!=x)fac[x].PB(x/i); } } mp[a]=1; for(auto u:fac[x])if(solve(x/u,y-u+1)==2)mp[a]=2; return mp[a]; } int main() { ios::sync_with_stdio(0); cin.tie(0); cin>>n; if(n==1){ cout<<1<<"\n"<<0; return 0; } vi b; REP(i,1,n)if(solve(n,i)==2)b.PB(i); cout<<b.size()<<"\n"; for(auto u:b)cout<<u<<" "; }
#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...