zoukankan      html  css  js  c++  java
  • c语言实现开灯问题

    开灯问题:

    有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000。

    附上代码:

        #include<stdio.h>  
        #include<string.h>  
          
        #define MAX 1000+10  
        int a[MAX];  
          
        int main()  
        {  
            int i, j, n=7, k=3;  
            //memset(a, 0, sizeof(a));    
            for(i = 1; i <= k; i++){  //人数
                for(j = 1; j <= n; j++){  //灯的数量
                    if(j%i == 0) a[j] = !a[j];
                    //按下编号为自己编号倍数的开关,通过0,1定义灯的开关状态
                }
            }
            for(i = 1; i <= n; i++){//遍历灯的数量
            if(a[i])  //如果灯开着执行
            {  
                if(i == n){//最后一盏灯
                    printf("%d,", i); 
                }
                else printf("%d ", i);  
            }
            }
            return 0;  
        }  
    努力吧,为了媳妇儿,为了家。。。
  • 相关阅读:
    Codeforces Round #249 (Div. 2) D. Special Grid 枚举
    图论二
    C语言中的atan和atan2(转)
    BestCoder Round #79 (div.2)
    数学
    LCA
    二分图
    动态规划
    线段树
    树状数组
  • 原文地址:https://www.cnblogs.com/jlj9520/p/5489768.html
Copyright © 2011-2022 走看看