开关灯问题(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;
}
相关推荐
Dream_Snowar14 分钟前
速通Python 第四节——函数
开发语言·python·算法
Altair澳汰尔27 分钟前
数据分析和AI丨知识图谱,AI革命中数据集成和模型构建的关键推动者
人工智能·算法·机器学习·数据分析·知识图谱
嵌入式科普1 小时前
十一、从0开始卷出一个新项目之瑞萨RA6M5串口DTC接收不定长
c语言·stm32·cubeide·e2studio·ra6m5·dma接收不定长
A懿轩A1 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
Python机器学习AI1 小时前
分类模型的预测概率解读:3D概率分布可视化的直观呈现
算法·机器学习·分类
吕小明么2 小时前
OpenAI o3 “震撼” 发布后回归技术本身的审视与进一步思考
人工智能·深度学习·算法·aigc·agi
1 9 J2 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
程序员shen1616112 小时前
抖音短视频saas矩阵源码系统开发所需掌握的技术
java·前端·数据库·python·算法
汝即来归2 小时前
选择排序和冒泡排序;MySQL架构
数据结构·算法·排序算法
咒法师无翅鱼3 小时前
【定理证明工具调研】Coq, Isabelle and Lean.
算法