c语言,百灯熄灭问题,求思路!!!!

有M盏灯,编号为1~M,分别由相应的M个开关控制。开始时全部开关朝上(朝上为开,灯亮),然后进行以下操作:编号凡是1的倍数的灯反方向拨一次开关;是2的倍数的灯再反方向拨一... 有M盏灯,编号为1~M,分别由相应的M个开关控制。开始时全部开关朝上(朝上为开,灯亮),然后进行以下操作:编号凡是1的倍数的灯反方向拨一次开关;是2的倍数的灯再反方向拨一次开关;是3的倍数的灯又反方向拨一次开关,......,直到是M的倍数的灯又方向拨一次开关。请从键盘输入一个整数n代表灯的数量,求出最后为熄灭状态的灯(不亮)的数量以及编号并输出。
【输入】
输入一个整数n(1<=n<=100)。
【输出】
输出为两行,第一行是熄灭状态的灯的数量;第二行是最后为熄灭状态的灯的编号
求思路!!!!!
展开
 我来答
lygszmjj
推荐于2016-09-05 · TA获得超过1814个赞
知道小有建树答主
回答量:1192
采纳率:0%
帮助的人:425万
展开全部
# include <stdio.h
 
main(void) 

 int i, j, m, n; 
 int s[200]; 
 scanf("%d", &m); 
 for(i=0; i<m;i++)
    s[i] =1;         //初始状态,开为1,关为-1
 for(i=0; i<m;i++)  
   for(j=i; j<m; j=j+i+1)
     s[j] =-1*s[j];    //状态翻转
 n=0;   
 for(i=0; i<m; i++) 
   if (s[i]==-1) 
     n++ ;      // 求数量
 printf("\n %d\n", n); 
 for(i=0; i<m; i++) 
   if (s[i]==-1)
    printf("%d ",i+1);   //求编号
}
毀搣_晟
2019-02-26
知道答主
回答量:5
采纳率:0%
帮助的人:3638
展开全部

花几分钟弄好的,供大家参考

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
文正153
2014-11-23 · TA获得超过2.1万个赞
知道大有可为答主
回答量:2221
采纳率:63%
帮助的人:637万
展开全部

这题so easy,此题被我占了!

# include <stdio.h>
# include <malloc.h>

int main(void)
{
    int i, j, m, n;
    char *ch;
    
    scanf("%d", &n);
    ch = malloc(n);            //虽然要这几个内存不用,,,,但是有了它逻辑性就更强了.....
    for(i=1; i<=n, i++)
    {
        for(j=0; j<=n; j+=i)
        {
            ~ch[j];
            m++
        }
    }
    printf("%d\n%d\n", m, j-i-1);
    free(ch);
    
    return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oakwood
2017-09-21 · TA获得超过877个赞
知道小有建树答主
回答量:942
采纳率:77%
帮助的人:230万
展开全部
看我的:
#include<stdio.h>
int main()
{
int m,i,a;
scanf("%d",&m);
for(i=1;i<=m;i++) if((i*i)>m) break;
printf("%d\n",i-1);
for(a=1;a<=i;a++) printf("%4d",a*a);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式