36 lines
628 B
C
36 lines
628 B
C
#include <stdio.h>
|
|
#include <stdbool.h>
|
|
#include <stdlib.h>
|
|
|
|
int score[1000001];
|
|
bool valid[1000001];
|
|
|
|
int main() {
|
|
int N;
|
|
scanf("%d",&N);
|
|
int* card = (int*)malloc(sizeof(int)*N);
|
|
|
|
for(int i=0; i<N; i++) {
|
|
scanf("%d",&card[i]);
|
|
valid[card[i]] = true;
|
|
}
|
|
|
|
for(int i=1; i<=1000000; i++) {
|
|
if(!valid[i]) continue;
|
|
|
|
for(int j=2*i; j<=1000000; j+=i) {
|
|
if(valid[j]) {
|
|
score[i] += 1;
|
|
score[j] -= 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
for(int i=0; i<N; i++) {
|
|
printf("%d ",score[card[i]]);
|
|
}
|
|
|
|
free(card);
|
|
|
|
return 0;
|
|
} |