【データ構造+アルゴリズム】【シミュレーション法】---点灯問題


【    】
      n , 1~n. , 2 2 ( ), 3 3 ( , ), , k , ?
【 】
        n k, k ≤ n ≤ 1000
【 】
       
【 】
        :7 3
        :1 5 6 7


分析:
シミュレーション法を直接使用します.ブール配列lamp[]を設計し、!lamp[i]ではランプがオフになっていることを示し、逆に点灯している.最初は、すべての明かりが閉まっていました.
自分のC++ソースコード:
#include <iostream>
using namespace std;

bool lamp[1001] = {false}; //   ,      。

int main(void)
{
    int n, k;
    cin >> n >> k;
    for(int i = 1; i <= k; i++) //      i
      for(int j = 1; i * j <= n; j++) //       j ,     i*j n  ,      
      {
          lamp[i * j] = !lamp[i * j]; //           ,    
      }
    for(int i = 1; i <= n; i++) if (lamp[i]) cout << i << ' ';
    return 0;
}

本文は“mlh 1719233148のブログ”のブログから出て、転載して作者と連絡してください!