一个开关灯的c语言问题。。。没有思路~

一个开关灯的c语言问题。。。没有思路~述假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1... 一个开关灯的c语言问题。。。没有思路~述
假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。

第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。

请问:当第M个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。

输入
输入正整数N和M,以单个空格隔开。
输出
顺次输出关闭的灯的编号,其间用逗号间隔。
样例输入
10 10
样例输出
1,4,9
展开
 我来答
种田的码农
2016-10-29 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:71
采纳率:0%
帮助的人:87.7万
展开全部

其实每个人做的事都是一样的,就是把灯的状态取反

如果M、N都等于10时,你可以这样想,接触第1盏灯的只有第一个人,接触第2盏灯的有1,2,第3盏灯的有1,3,第4盏灯有1,2,4,那接触了第n盏灯的就可以看出规律了,算一下1到n中有几个数可以被n整除就有几个人接触了第n盏灯,知道有多少人接触之后,再看一下人数是奇数还是偶数,偶数的话灯还开着

更多追问追答
追问
怎么分开第几盏灯的次数?。还是写不出来

#include
int main()
{
int N,M,i,sum=0;
scanf("%d %d",&N,&M);
for( i=1;i<=N;i++)
{
for(int j=1;j<=i&j<=M;j++)
{
if(i%j==0)
{
// sum++;
}
}
}
/* if(sum/2!=0)
printf("%d,",i);*/
return 0;
}
追答
改了一些地方,你对比一下看看
#include<stdio.h>
int main()
{
int N,M,i,sum=0;
scanf("%d %d",&N,&M);
for( i=1;i<=N;i++)
{
sum = 0 ;
for(int j=1;j<=i&&j<=M;j++)
{
if(i%j==0)
{
sum++;
}
}
if(sum%2!=0)
printf("%d,",i);
}
   
return 0;
}
艾普斯
2024-07-18 广告
稳频稳压电源哪家好?艾普斯电源(苏州)有限公司开始专业研发、制造及营销交流稳压电源,满足全球电子及信息业对电源设备日益蓬勃的市场需求。迄今为止,业已发展成为交流不间断电源、稳压电源、变频电源、中频航空- 军事专用电源、直流电源、逆变电源等产... 点击进入详情页
本回答由艾普斯提供
西北战狼55
2016-10-29 · TA获得超过792个赞
知道小有建树答主
回答量:1023
采纳率:0%
帮助的人:254万
展开全部
这个我会,可以帮你写!
追问
怎么做?
追答
看我头像
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我是马甲92
2016-10-29 · 超过16用户采纳过TA的回答
知道答主
回答量:220
采纳率:0%
帮助的人:40.6万
展开全部
c语言程序帮编写
追问
什么?
追答
程序帮编写 私信我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式