알고리즘 풀이

백준 6359번 만취한 상범

dokrsky 2018. 2. 7. 23:22

https://www.acmicpc.net/problem/6359


#include <cstdio>
#pragma warning(disable:4996)
int N, m;
int process(int m) {
int prison[101] = { 0, };
for (int i = 1; i <= m; ++i) {
prison[i] = 1;
}
// 1은 열려있다, -1은 닫혀있다.
for (int i = 2; i <= m; ++i) {
for (int j = i; j <= m; j += i) {
prison[j] = prison[j] * (-1);
}
}
int ans = 0;
for (int i = 1; i <= m; ++i) {
if (prison[i] == 1)
ans++;
}
return ans;
}
int main() {
scanf("%d", &N);
for (int i = 0; i < N; ++i) {
scanf("%d", &m);
printf("%d\n",process(m));
}
return 0;
}