百灯判息*
作者:互联网
描述
有 M 盏灯,编号为:1 - M,分别由相应的 M 个开关控制。开始时全部开关朝上(朝上为开,灯亮),然后进行以下操作: 编号凡是 1 的倍数的灯反方向拨一次开关;是 2 的倍数的灯再反方向拨一次开关;是 3 的倍数的灯又反方向拨一次开关,......, 直到是 M 的倍数的灯又反方向拨一次开关。 请从键盘输入一个整数 m 代表灯的数量,求出最后为熄灭状态的灯(不亮)的数量以及编号并输出。
输入
输入一个整数m(1≤m≤100)。
输出
输出为两行,第一行是熄灭状态的灯的数量; 第二行是最后为熄灭状态的灯的编号(每个数据以4列的域宽显示)。
输入输出示例
输入 | 输出 | |
示例1 | 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