
/****************************************************************************************
题目链接:
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<<" "<