暑假訓練第五天打卡,刷了一天的循環基礎題,有點意思啊。開關燈

開關燈,

 

描述

假設有N盞燈(N爲不大於5000的正整數),從1到N按順序依次編號,初始時全部處於開啓狀態;有M個人(M爲不大於N的正整數)也從1到M依次編號。

第一個人(1號)將燈全部關閉,第二個人(2號)將編號爲2的倍數的燈打開,第三個人(3號)將編號爲3的倍數的燈做相反處理(即,將打開的燈關閉,將關閉的燈打開)。依照編號遞增順序,以後的人都和3號一樣,將凡是自己編號倍數的燈做相反處理。

請問:當第M個人操作之後,哪幾盞燈是關閉的,按從小到大輸出其編號,其間用逗號間隔。

輸入輸入正整數N和M,以單個空格隔開。輸出順次輸出關閉的燈的編號,其間用逗號間隔。樣例輸入

10 10

樣例輸出

1,4,9

 

我認爲是有兩種寫法的

 

第一種,一個數組,然後只有0 ,1或者是true or false,0代表開燈,1代表關燈,

之後進去一個人改變燈的開關,就是0變1,1變0,

然後把 數組內是1的下標輸出來,

第二種就是,每個人進去一次然後下標就加1,然後是奇數的輸出下標

#include<bits/stdc++.h>
using namespace std;
int main(){
int a[5000];
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
a[i]=0;
for(int j=1;j<=m;j++)
{

for(int i=1;i<=n;i++)
{
if(i%j==0){
a[i]+=1;
}
}
}
for(int i=1;i<=n;i++)
{
if(i==1)
{
cout<<1;
}
else if(a[i]%2==1)
cout<<","<<i;
else continue;
}
return 0;
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章