zoukankan      html  css  js  c++  java
  • 开灯问题

    #include <stdio.h>
    #include <math.h>
    // 算法竞赛的目标是编程对任意输入均得到正确的结果。
    // 请先独立完成,如果有困难可以翻阅本书代码仓库中的答案,但一定要再次独立完成。
    // “抓住主要矛盾”——始终把学习、实验的焦点集中在最有趣的部分。如果直观地解决方案行得通,就不必追究其背后的原理。
    // 编程不是看书看会的,也不是听课听会的,而是练会的。
    
    /**
    【题目】开灯问题
    有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2
    的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯
    将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输
    入n和k,输出开着的灯的编号。k≤n≤1000。
    样例输入:
    7 3
    样例输出:
    1 5 6 7
    */
    
    
    /**
    【分析】通过数组来存储所有的电灯信息,剩下的就是判断倍数以及,电灯开关判断的问题了
    */
    #define max 1100
    int a[max];
    int main()
    {
        int n,k;
        scanf("%d%d",&n,&k);
    
        if (k>n || n> 1000 || k<0) {
            printf("Input Error");
            return 0;
        }
    
        memset(a,0,sizeof(a)); // 设置所有灯为关闭 0表示关闭,1表示开启
    
        int i,j;
        for (i=1;i<=k;i++) {
            for(j=1;j<=n;j++) {
                //依次对电灯进行处理
                if (j%i == 0) { // 判断倍数的,太精辟了
                    a[j] = !a[j];
                }
            }
        }
    
        for (j=1;j<=n;j++) {
            if (a[j]) {
                printf("%d	",j);
            }
        }
    
        printf("
    ");
    
        return 0;
    }
    
    
    

    点评:这个有点意思。

  • 相关阅读:
    LeetCode 566 重塑矩阵
    LeetCode 283 移动零
    C++Template(类模板二)
    Qt之简单绘图实现
    QT控件之QSlider
    Redis
    布局总结三: icon图标+标题上下两排排列
    vue中在data中引入图片的路径方法
    布局总结二:宽高比固定比例---移动端
    在vue中使用vue-awesome-swiper插件
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/8534860.html
Copyright © 2011-2022 走看看