#include <iostream> #include <vector> #include <algorithm> using namespace std; long long m,b,n,odp; vector <long long> x; vector <long long> a; int main() { cin >> n; for(int i=0;i<n;i++) { cin >> m; a.push_back(m); } sort(a.begin(),a.end()); b=a[0]; m=1; for(int i=1;i<n;++i) { if(a[i]==b)m++; else{ x.push_back(m); b=a[i]; m=1; } } x.push_back(m); sort(x.begin(),x.end()); cout << n << " "; for(int k=2;k<=n;++k) { odp=0; if(k<=x[x.size()-1]){ for(int i=0;i<x.size();++i) { if(x[i]>=k){ b=x[i]%k; odp=odp+x[i]-b; } } cout << odp << " ";} else cout << odp << " "; } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <iostream> #include <vector> #include <algorithm> using namespace std; long long m,b,n,odp; vector <long long> x; vector <long long> a; int main() { cin >> n; for(int i=0;i<n;i++) { cin >> m; a.push_back(m); } sort(a.begin(),a.end()); b=a[0]; m=1; for(int i=1;i<n;++i) { if(a[i]==b)m++; else{ x.push_back(m); b=a[i]; m=1; } } x.push_back(m); sort(x.begin(),x.end()); cout << n << " "; for(int k=2;k<=n;++k) { odp=0; if(k<=x[x.size()-1]){ for(int i=0;i<x.size();++i) { if(x[i]>=k){ b=x[i]%k; odp=odp+x[i]-b; } } cout << odp << " ";} else cout << odp << " "; } return 0; } |