Mendo Judge Discussion Board - Forums
Search
Recent Topics
Hottest Topics
Member Listing
Back to home page
Zadaca deliteli
Forum Index
»
Задачи од национални натпревари
Author
Message
30/12/2017 15:34:42
Subject:
Zadaca deliteli
BATIR
Joined: 20/06/2015 16:36:50
Messages: 155
Offline
Zdravo na site. Momentalno ja resavam zadaca deliteli.
http://mendo.mk/Task.do?id=373
Mojot kod gi zadovoluva site baranja, osven toa shto na nekoi test primeri dava Time limit exceed . Moze nekoj sovet shto da popravam ili vo shto gresam.
Kod:
#include<bits/stdc++.h> using namespace std; vector<long long> comb; vector<long long> global; void sec_permutation(long long divisors,vector<long long> v) { for(long long i=0; i<v.size(); i++) { divisors=0; for(long long j=1; j<=v[i]; j++) { if(v[i]%j==0) { divisors++; } } global.push_back(divisors); } return; } int main() { ios_base::sync_with_stdio(false); long long n; cin>>n; long long arr[n]; //cout<<endl; for(long long i = 0; i < n; i++) { cin>>arr[i]; } sort(arr,arr+n); do { for(long long i = 0; i < n; i++) comb.push_back(arr[i]); } while(next_permutation(arr, arr + n)); long long divisors; vector<long long> idx; long long smaller=100000; //sec_permutation(divisors,comb); long long test; vector<long long> cpt; for(long long i=0; i<comb.size(); i+=n) { test=0; for(long long j=i; j<i+n; j++) { if(j==i) { test+=comb[j]; } else { test*=10; test+=comb[j]; } } cpt.push_back(test); } //for(long long i=0; i<cpt.size(); i++) //{ //cout<<cpt[i]<<" "; //} //cout<<endl; vector<long long> scase; sec_permutation(divisors,cpt); for(long long i=0; i<global.size(); i++) { if(smaller>global[i]) { if(idx.size()!=0) { idx.clear(); } smaller=global[i]; idx.push_back(i); } else if(smaller==global[i]) { idx.push_back(i); } } cout<<smaller<<endl; if(idx.size()==1) { cout<<cpt[idx[0]]; return 0; } else { for(long long i=0; i<idx.size(); i++) { cout<<cpt[idx[i]]<<" "; } } return 0; }
Fala odnapred
31/12/2017 11:43:47
Subject:
Re:Zadaca deliteli
Perez
Joined: 18/10/2014 18:53:59
Messages: 93
Offline
Проблемот е со пермутациите и со барањето на делители
This message was edited 4 times. Last update was at 31/12/2017 18:38:19
01/01/2018 11:10:08
Subject:
Re:Zadaca deliteli
Perez
Joined: 18/10/2014 18:53:59
Messages: 93
Offline
#include <bits/stdc++.h> using namespace std; vector<int>facts[1000]; int mini=1001; void factors(int broj) { // brz nacin za baranje deliteli int k=0,i; for(i=1;i<sqrt(broj);i++) if(broj%i==0) k++; k*=2; i=sqrt(broj); if(broj%i==0) k++; //////////////////////////// facts[k].push_back(broj); if(k<mini)mini=k; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin>>n; int num; string s; for(int i=0; i<n; cin>>num, s+=char(num+'0'),i++); sort(s.begin(),s.end()); do { stringstream stream1(s); //mene inputot mi e string ... go pretvaravam vo int int x; stream1>>x; factors(x); } while(next_permutation(s.begin(),s.end())); cout<<mini<<"\n"; for(auto x:facts[mini])cout<<x<<" "; }
Forum Index
»
Задачи од национални натпревари
Go to:
Select a forum
Добродојдовте!
Општа дискусија
Задачи од национални натпревари
Задачи од меѓународни натпревари
Други задачи
Регионални натпревари
Државни натпревари
Македонски Олимпијади
Други натпревари
Pascal
C/C++
Јава
Други јазици
Powered by
JForum 2.1.8
©
JForum Team