Code:
#include<cstdio> #include<algorithm> #include<string> using namespace std; void setIO(string a){ freopen((a+".in").c_str(),"r",stdin); freopen((a+".out").c_str(),"w",stdout); } void end(){ fclose(stdin),fclose(stdout); } const int maxn=1000000+5; int sum[maxn],arr[maxn],MAX,ans[maxn]; int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;++i){ scanf("%d",&arr[i]); ++sum[arr[i]]; MAX=max(MAX,arr[i]); } for(int i=1;i<=MAX;++i){ if(!sum[i]) continue; for(int j=i;j<=MAX;j+=i) ans[j]+=sum[i]; } for(int i=1;i<=n;++i){ printf("%d\n",ans[arr[i]]-1); } return 0; }