/**************************************************************************************** 題目鏈接: http://acm.nyist.net/JudgeOnline/problem.php?pid=77 思 路: 首先是輸入2個數據,然後定義一個數組,介於燈只有2種狀態, 所以就定義成bool類型,然後初始化為0,代表燈起初全部是關閉狀態。 接著是2個循環,外面的循環代表從編號為1的人開始,直到結束。 裡面的循環代表從編號為1的燈進行操作,把符合要求的燈的狀態改變為和原來相反的狀態即可。 最後判斷哪些燈是開的,將它的編號輸出。 由於最後的輸出中,除了第一個輸出的前面沒有空格,其它的結果前面都有空格, 所以就把第一個就單獨考慮。 ****************************************************************************************/ #include#include #include using namespace std; int main(void) { int n,k; while(cin>>n>>k) { bool *lamp = (bool *)malloc((n+2)*sizeof(bool)); memset(lamp,0,(n+2)*sizeof(lamp)); for(int i=1; i<=k; i++)//人數遍歷 for(int j=1; j<=n; j++)//燈數遍歷 if(j % i == 0) * (lamp+j) = !*(lamp+j); cout<<1; for(int j=2; j<=n; j++) if(*(lamp+j) == 1) cout<<" "<