2 solutions
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; int a[N],cnt[N],s[N]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; cnt[a[i]]++; } for(int i=1;i<N;i++) { for(int j=1;j<=N/i;j++) { s[j*i]+=cnt[i]; } } for(int i=1;i<=n;i++) { cout<<s[a[i]]-1<<endl; } return 0; }
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e6+10; int a[N],cnt[N],s[N]; int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; cnt[a[i]]++; //统计a[i]出现的次数 } for(int i=1;i<N;i++) { for(int j=i;j<N;j+=i) //将i出现的次数累加到i的倍数j中 { s[j]+=cnt[i]; } } for(int i=1;i<=n;i++) { cout<<s[a[i]]-1<<endl; } return 0; }
- 1
Information
- ID
- 971
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- (None)
- # Submissions
- 38
- Accepted
- 8
- Uploaded By