开关灯问题(c语言)

样例:10 10 ,输出:1,4,9

5 5 ,输出:1,4

代码如下

cs 复制代码
#include<stdio.h>
//引入bool值的概念
#include<stdbool.h>
int main()
{
	int n = 0;//n为灯的数量
	int m = 0;//m为人的数量
	int i;
	scanf("%d %d", &n, &m);

	//如果只有一个人
	//肯定全部灯是关闭的
	if (m == 1)
	{
		for (i = 0; i < n; i++)
		{
			printf("%d", i+1 );
		}
		printf("%d", n);
        return 0;
	}
	//从第二个人开始要进行取反操作,如果灯关着,那么就把灯打开
	else
	{
		//bool数组的创建
		bool light[5000];
		for (i = 0; i < n; i++)//数组的遍历
		{
			//因为第一个人把灯全关了,所以把bool数组初始化为false
			light[i] = false;
		}
		
		int j = 1;
		while(j!=m)
		{
			j++;
			//从第二个人开始
			for (i = 1; i < n; i++)
			{
				
				if (i % j == 0)//判断是否为几的倍数。
				{
					light[i] = !light[i];//逻辑取反操作,把开的灯关着,关的灯开起来
				}
			}
		}
		int flag = 0;
		for (i = 1; i < n; i++)
		{
			if (light[i] == false && flag == 0)
			{  //格式问题,第一个不输出","
				flag = 1;
				printf("%d", i);
			}
			else if (light[i] == false)
			{
				printf(",%d", i);  //依次输出灯关闭的下标
			}
		}
	}
 return 0;
}
相关推荐
蜡笔小电芯16 分钟前
【C语言】指针与回调机制学习笔记
c语言·笔记·学习
Y1nhl17 分钟前
力扣_链表_python版本
开发语言·python·算法·leetcode·链表·职场和发展
qq_4017004133 分钟前
C语言中位运算以及获取低8位和高8位、高低位合并
c语言·开发语言·算法
CoovallyAIHub36 分钟前
YOLO模型优化全攻略:从“准”到“快”,全靠这些招!
深度学习·算法·计算机视觉
闻缺陷则喜何志丹42 分钟前
【BFS】 P10864 [HBCPC2024] Genshin Impact Startup Forbidden II|普及+
c++·算法·宽度优先·洛谷
MicroTech20251 小时前
微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
数据库·科技·算法
今天背单词了吗9801 小时前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
手握风云-2 小时前
优选算法的链脉之韵:链表专题
数据结构·算法·链表
Coding小公仔2 小时前
LeetCode 151. 反转字符串中的单词
开发语言·c++·算法
稳兽龙2 小时前
P1098 [NOIP 2007 提高组] 字符串的展开
c++·算法·模拟