#include <bits/stdc++.h> using namespace std; const int MX=300100; int n,x,a[MX],res[MX]; map<int,int> cnt; int main() { scanf("%d",&n); for (int i=0; i<n; i++) { scanf("%d",&x); ++cnt[x]; } for (auto it=cnt.begin(); it!=cnt.end(); it++) ++a[it->second]; for (int i=1; i<=n; i++) if (a[i]) for (int j=1; j<=i; j++) res[j]+=a[i]*(i-i%j); for (int i=1; i<=n; i++) printf("%d%c",res[i],(i==n)?'\n':' '); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <bits/stdc++.h> using namespace std; const int MX=300100; int n,x,a[MX],res[MX]; map<int,int> cnt; int main() { scanf("%d",&n); for (int i=0; i<n; i++) { scanf("%d",&x); ++cnt[x]; } for (auto it=cnt.begin(); it!=cnt.end(); it++) ++a[it->second]; for (int i=1; i<=n; i++) if (a[i]) for (int j=1; j<=i; j++) res[j]+=a[i]*(i-i%j); for (int i=1; i<=n; i++) printf("%d%c",res[i],(i==n)?'\n':' '); return 0; } |