其他分享
首页 > 其他分享> > 百灯判息*

百灯判息*

作者:互联网

描述

有 M 盏灯,编号为:1 - M,分别由相应的 M 个开关控制。开始时全部开关朝上(朝上为开,灯亮),然后进行以下操作:
编号凡是 1 的倍数的灯反方向拨一次开关;是 2 的倍数的灯再反方向拨一次开关;是 3 的倍数的灯又反方向拨一次开关,......,
直到是 M 的倍数的灯又反方向拨一次开关。
请从键盘输入一个整数 m 代表灯的数量,求出最后为熄灭状态的灯(不亮)的数量以及编号并输出。

输入

输入一个整数m(1≤m≤100)。

输出

输出为两行,第一行是熄灭状态的灯的数量;
第二行是最后为熄灭状态的灯的编号(每个数据以4列的域宽显示)。

输入输出示例 

输入输出
示例1100

10
   1   4   9  16  25  36  49  64  81 100

#include<stdio.h>
int main(){
    int m,i,j;
    scanf("%d",&m);//灯的盏数
    int a[m+1],k=0;
    for(i=1;i<=m;i++)a[i]=1;//登奇数为亮
    for(i=1;i<=m;i++)
        for(j=1;j<=m;j++)
            if(j%i==0)
                a[j]++;//进行开关灯操作
    for(i=1;i<=m;i++)
        if(a[i]%2==0)//判断灯是否熄灭
            k++;//计数
    printf("%d\n",k);
    for(i=1;i<=m;i++)
        if(a[i]%2==0)
            printf("%4d",i);//输出编号
}

标签:判息,熄灭,示例,int,百灯,开关,倍数,编号
来源: https://blog.csdn.net/qq_62270984/article/details/122094615