zoukankan      html  css  js  c++  java
  • 算法竞赛入门经典 例题 3-1 开灯问题

      

         有n盏灯,编号为1~n,第1个人把全部灯打开,第2个人按下全部编号为2的倍数的开关(这些灯将被关掉),第3个人按下全部编号为3的倍数的开关(当中关掉的灯被打开,       开着灯将被关闭),依此类推。

    一共同拥有k个人。问最后有哪些灯开着?

        输入:n和k。输出开着的灯编号。k≤n≤1000。

       例子输入:7  3

       例子输出:1 5 6 7 

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAXN 1000 + 10
    int a[MAXN];
    
    int main(int argc, char *argv[])
    {
      int i, j, n, k, first = 1;
      scanf("%d %d", &n, &k);
      memset(a, -1, sizeof(a));
      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] == 1) printf("%d ", j); //最后应该没空格 
           
           */   
                                  
      for(j = 1; j <= n; j++)
         if(a[j] == 1) {if(first) first = 0; else printf(" "); printf("%d", j);}
      printf("
    ");     //最后再输出换行符 
      system("PAUSE");	
      return 0;
    }

    总结:1 用一个标志来推断是否为第一次输出。如是,不输出空格。否则先输空格后输数字

                2 开关灯也能够用0 1

  • 相关阅读:
    mkdosfs 安装
    块设备驱动程序-内存盘
    usb驱动程序小结(六)
    usb的hid鼠标键盘报告描述符(五)
    usb输入子系统写程序(三)
    usb输入子系统键盘(四)
    usb描述符简述(二)
    linux usb总线驱动(一)
    linux 触摸屏驱动
    lcd驱动框架
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7105924.html
Copyright © 2011-2022 走看看