优化
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int k = 1 , a[N] , b[N];
unordered_map<int,int>cnt;
int main(){
int n;
scanf("%d" , &n);
for(int i = 1; i <= n ; i++){
scanf("%d" , &a[i]);
b[i] = a[i];
}
sort(a + 1 , a + 1 + n );
for(int i = 1; k <= n ; i++){
for(int j = k ; j <= n ; j++){
if(a[j] % i == 0 && i <= a[j]/i) cnt[a[j]] += (a[j]/i==i?1:2);
if(i >= a[j] / i) k = j + 1;
}
}
for(int i = 1; i <= n ; i++){
printf("%d\n" , cnt[b[i]]);
}
}