首页 > 其他 > 详细

开灯问题(语言入门)

时间:2014-04-17 03:43:36      阅读:599      评论:0      收藏:0      [点我收藏+]

bubuko.com,布布扣

/****************************************************************************************
   题目链接:
               http://acm.nyist.net/JudgeOnline/problem.php?pid=77
   思    路:
               首先是输入2个数据,然后定义一个数组,介于灯只有2种状态,
               所以就定义成bool类型,然后初始化为0,代表灯起初全部是关闭状态。
               接着是2个循环,外面的循环代表从编号为1的人开始,直到结束。
               里面的循环代表从编号为1的灯进行操作,把符合要求的灯的状态改变为和原来相反的状态即可。
               最后判断哪些灯是开的,将它的编号输出。
               由于最后的输出中,除了第一个输出的前面没有空格,其它的结果前面都有空格,
               所以就把第一个就单独考虑。
****************************************************************************************/
#include <iostream>
#include <malloc.h>
#include <string.h>
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<<" "<<j;
		  cout<<endl;
	}
	return 0;
}

开灯问题(语言入门),布布扣,bubuko.com

开灯问题(语言入门)

原文:http://blog.csdn.net/li_jun_09_05/article/details/23882629

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!