zoukankan      html  css  js  c++  java
  • 开灯问题--------《算法竞赛入门指导》P83

    开灯问题。

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

    我的代码为

    #include<iostream>
    using namespace std;
    int main(void){
        int n,k;
        cin>>n; //灯的数量n 
        cin>>k; //人的数量k
        int i,j;
        int a[n];
    
        
        
        j=1;
        for(i=0;i<n;i++){
            a[i]=1;
        }
        for(j=2;j<=k;j++){
            for(i=j-1;i<n;i+=j){
                a[i]=-a[i];
            }    
        }
        
        for(i=0;i<n;i++){
            if(a[i]==1){
                cout<<i+1<<" ";
            }
        }
        return 0;
    }

    运行结果

  • 相关阅读:
    Javabean(MAX)
    电梯时间计算
    FT232R USB UART驱动安装
    java多态
    php文件上传代码
    $_FILES ERROR
    17
    php伪静态
    我的博客开通了!
    【省选划水记】我确实是在划水。
  • 原文地址:https://www.cnblogs.com/yizhaoAI/p/7051291.html
Copyright © 2011-2022 走看看