#include<bits/stdc++.h>
using namespace std;
map<int, int> amount;
int pref[600006];
int main()
{
int n;
cin >> n;
pref[0]=n;
for(int i=0; i<n; i++)
{
int p, l;
cin >> p;
l=amount[p];
amount[p]++;
pref[l]--;
pref[l+1]++;
}
for(int i=n+5; i>0; i--)
{
pref[i]=pref[i+1]+pref[i];
}
for(int i=1; i<(n+1); i++)
{
int pointer=(n/i), W=0;
while(pointer>0)
{
W+=(pref[pointer*i]-pref[(pointer+1)*i])*pointer*i;
pointer--;
}
cout << W << " ";
}
}
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 | #include<bits/stdc++.h> using namespace std; map<int, int> amount; int pref[600006]; int main() { int n; cin >> n; pref[0]=n; for(int i=0; i<n; i++) { int p, l; cin >> p; l=amount[p]; amount[p]++; pref[l]--; pref[l+1]++; } for(int i=n+5; i>0; i--) { pref[i]=pref[i+1]+pref[i]; } for(int i=1; i<(n+1); i++) { int pointer=(n/i), W=0; while(pointer>0) { W+=(pref[pointer*i]-pref[(pointer+1)*i])*pointer*i; pointer--; } cout << W << " "; } } |
English