#include<bits/stdc++.h> using namespace std; #define pb push_back #define eb emplace_back //mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); #define mod 998244353 #define ll long long #define inf 0x3f3f3f3f #define INF 0x3f3f3f3f3f3f3f3f inline int read() { char ch=getchar(); int nega=1; while(!isdigit(ch)) {if(ch=='-') nega=-1; ch=getchar();} int ans=0; while(isdigit(ch)) {ans=ans*10+ch-48;ch=getchar();} if(nega==-1) return -ans; return ans; } void print(vector<int> x){for(int i=0;i<(int)x.size();i++) printf("%d%c",x[i]," \n"[i==(int)x.size()-1]);} #define N 300005 int a[N],ans[N],n; map<int,int> cnt; signed main() { cin>>n; for(int i=1;i<=n;i++) a[i]=read(),cnt[a[i]]++; for(auto [val,m]:cnt) { for(int l=1,r;l<=m;l=r+1) { r=m/(m/l); ans[l]+=m/l,ans[r+1]-=m/l; } } for(int i=1;i<=n;i++) ans[i]+=ans[i-1]; for(int i=1;i<=n;i++) printf("%d%c",ans[i]*i," \n"[i==n]); 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 | #include<bits/stdc++.h> using namespace std; #define pb push_back #define eb emplace_back //mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); #define mod 998244353 #define ll long long #define inf 0x3f3f3f3f #define INF 0x3f3f3f3f3f3f3f3f inline int read() { char ch=getchar(); int nega=1; while(!isdigit(ch)) {if(ch=='-') nega=-1; ch=getchar();} int ans=0; while(isdigit(ch)) {ans=ans*10+ch-48;ch=getchar();} if(nega==-1) return -ans; return ans; } void print(vector<int> x){for(int i=0;i<(int)x.size();i++) printf("%d%c",x[i]," \n"[i==(int)x.size()-1]);} #define N 300005 int a[N],ans[N],n; map<int,int> cnt; signed main() { cin>>n; for(int i=1;i<=n;i++) a[i]=read(),cnt[a[i]]++; for(auto [val,m]:cnt) { for(int l=1,r;l<=m;l=r+1) { r=m/(m/l); ans[l]+=m/l,ans[r+1]-=m/l; } } for(int i=1;i<=n;i++) ans[i]+=ans[i-1]; for(int i=1;i<=n;i++) printf("%d%c",ans[i]*i," \n"[i==n]); return 0; } |