zoukankan      html  css  js  c++  java
  • n个灯,k个人的开灯问题

    /**有n个灯,编号为1-n。第一个人把所以灯打开,第二个人按下
    所有编号为2的倍数的开关,第三个人按下3的倍数的开关,依次类推,
    一共有k个人,问最后有哪些灯开着?
    样例输入:
    7 3
    样例输出:
    1 5 6 7
    **/

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main()
    {
        int a[1005],i,j,k,n,first=1;
        scanf("%d%d",&n,&k);
        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];
        }
        for(i=1;i<=n;i++)
        {
            if(a[i])
            {
                if(first)
                    first=0;
                else
                    printf(" ");
                printf("%d",i);
            }
        }
        printf("
    ");
        return 0;
    }
    

    memset(a,0,sizeof(a));的作用是把数组a全部赋为0;
    为了避免输出多余的空格,设置了一个变量first,可以表示当前要输出的变量是否为第一个。第一个变量前面没有空格,其他变量都有。

  • 相关阅读:
    rstudio命令行操作
    HTTP缓存机制
    F5和Ctrl F5
    g++与gcc区别
    C++中long long和long
    拉链法哈希表实现
    tcp中的带外数据
    LSGAN
    随机森林分类器学习
    python中cls关键字
  • 原文地址:https://www.cnblogs.com/webmen/p/5739659.html
Copyright © 2011-2022 走看看