// PR Bab 08, tantangan -- pembahasan. // // n = 100 -> 10 // n = 1000 -> 31 // n = 10000 -> 100 // // Polanya: jawabannya adalah bagian bulat dari akar n. Lampu ke-x // ditekan sekali untuk setiap pembagi x, dan pembagi selalu berpasangan // (x = a*b) kecuali kalau x bilangan kuadrat, yang punya satu pembagi // kembar. Jadi hanya lampu bernomor kuadrat yang ditekan ganjil kali // dan berakhir menyala. // // Versi satu baris: cout << (int)sqrt((double)n) << "\n"; #include using namespace std; const int MAKS = 1000005; bool nyala[MAKS]; int main() { int n; cin >> n; for (int i = 1; i <= n; i++) for (int j = i; j <= n; j += i) nyala[j] = !nyala[j]; int banyak = 0; for (int i = 1; i <= n; i++) if (nyala[i]) banyak++; cout << banyak << "\n"; return 0; }