还剩几盏灯 没思路 请求支援

img


求个哥写下 😭 不知道这个开关是什么意思 第一个人开第一盏灯还是跳过第一盏灯开第二盏灯

思路

这道题意思是说:第一个人按1,3,5的顺序开关灯,第二个人按1、4、7的顺序开关,第三个人按1,5,9的顺序关灯;
可以发现,每个人开关灯的编号都是按他自己的编号累加的。
这道题用的是标记和模拟法
先模拟一遍上述过程,在进行一次统计。

代码


#include<bits/stdc++.h>
using namespace std;
int main()
{
    bool a[105];
    int n,s=0;
    memset(a,0,sizeof(a));//把a数组全部变为0,设为开灯 
    scanf("%d",&n);//cin>>n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=100;j=j+i+1)//这是重点 
        {
            if(a[j]==0) a[j]=1;
            else a[j]=0;    
            //做相反操作(开灯变为关灯,关灯变为开灯) 
        }
    }//模拟
    for(int i=1;i<=100;i++)
    {
        if(a[i]==1) s++;
    }//统计 
    printf("%d",s);//cout<<s;
}