• NYOJ 77 开灯问题


    #include <stdio.h>
    #include <string.h>
    #define maxn 1050
    int a[maxn];
    int main(void)
    {
        int n,k,i,j;
        memset(a,0,sizeof(a));
        scanf("%d%d",&n,&k);
        for(i=1; i<=k; i++)
            for(j=1; j<=n; j++)
                if(j%i==0)a[j]=!a[j];
        for(i=1; i<n; i++)
            if(a[i])printf("%d ",i);
        a[i]?printf("%d
    ",i):printf("
    ");
        return 0;
    }
    

      解题思路:用一个数组存放灯的状态,利用memset()【(bzero()也可制0,已过时)函数将其全部制0,也可初始化为0】,表示灯全部关闭,输入n盏灯,k个人,两重for循环,i循环表示人,j循环表示灯,判断j%i是否等于零,每个人都可能会对所有的灯进行修改

    第一个人  即 i=1,那么j%i一直等于0,作用是将所有的灯都打开

    第二次(也就是第二个人),i=2,每个灯对 i 进行%,j%i 灯的编号 是否能被 j 整除,如果可以则将灯的状态反转,作用是 " 第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉) "

    依次类推,这里 i j、都取1 ,从第一盏灯开始(没有第0盏灯),到j<=n,i<=k,第n盏灯,第K个人。

    然后 for 循环 从第一盏灯,到第 n-1 盏灯,如果 a[i] (只为1,说明灯亮),则输出。最后一盏灯单独判断,是会存在多输出一个 “ ”空格的原因。

  • 相关阅读:
    idea 访问https://start.spring.io失败
    torch.nn.Dropout()
    torch.utils.tensorboard
    PyTorch 环境配置及安装
    np.reshape()
    torch.utils.data
    np.sum()
    Pytorch model.train()、model.eval()
    np.squeeze
    Python 临时文件、目录的生成
  • 原文地址:https://www.cnblogs.com/A--Q/p/5690662.html
Copyright © 2020-2023  润新知