码迷,mamicode.com
首页 > 其他好文 > 详细

开灯问题

时间:2018-09-02 17:18:16      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:ace   布尔类型   eof   code   false   合格   set   clu   处理   

问题描述:有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关,依此类推,一共k个人,问最后有哪些灯开着?   输入n,k,输出开着的灯的编号。  k<=n<=1000

 

思路:定义一个存储灯的布尔类型的数组,将它们的值都设置为false,表示灭。然后遍历处理一下,输出值为真的灯的编号。

 

 1 #include<iostream>    
 2 
 3 using namespace std;
 4 bool a[100];
 5 int main()
 6 {
 7     int n, k;
 8     cin >> n >> k;
 9     memset(a, false, sizeof(int));  // 将数组全部置为false
10 
11     for (int i = 1; i <= k; i++)          //    有k个人
12         for (int j = 1; j <= n; j++) {      //  有n盏灯
13             if (j%i == 0) a[j] = !a[j];       // 如果灯的编号不是人的编号的倍数,将数组置反。
14         }
15     for (int i = 1; i <= n; i++) {   //   打印合格数据
16         if (a[i])cout << i << " ";
17     }
18 
19     system("pause");
20 }

 

开灯问题

标签:ace   布尔类型   eof   code   false   合格   set   clu   处理   

原文地址:https://www.cnblogs.com/ll-10/p/9574143.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!