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;
    }
    
    
    

    点评:这个有点意思。

  • 相关阅读:
    Service、chkconfig命令
    mongoDB 入门
    HTTP 缓存
    MIME类型记录
    CSS3 动画 思维导图
    部署Seafile服务
    AngularJS 学习笔记
    Bootstrap3 学习笔记
    CSS 弹性盒
    传送门(portal)
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/8534860.html
Copyright © 2011-2022 走看看