开灯问题
2016-02-06 16:51
232 查看
description
有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号。k≤n≤1000。
样例输入
7 3
样例输出
1 5 6 7
分析
用a[1],a[2]...,a
表示编号为1,2,3,...,n的灯是否开着。模拟这些操作即可。
有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号。k≤n≤1000。
样例输入
7 3
样例输出
1 5 6 7
分析
用a[1],a[2]...,a
表示编号为1,2,3,...,n的灯是否开着。模拟这些操作即可。
#include<cstdio> #include<cstdlib> #include<cstring> const int maxn=1010; int a[maxn]; int main() { int n,k,first=1; memset(a,0,sizeof(a));//把数组a清零,在string.h中定义 scanf("%d %d",&n,&k); for(int i=1;i<=k;i++) for(int j=1;j<=n;j++) if(j%i==0) a[j]=!a[j];//取反 for(int i=1;i<=n;i++) { if(a[i]) { if(first) first=0; else printf(" "); printf("%d",i); } } return 0; }
相关文章推荐
- 在ubuntu上安装zeppelin
- linux mtr 命令详解
- 我的2015
- 我的2015
- Xcode 6制作动态及静态Framework
- 栈
- iOS开发之静态库.a的制作教程
- 运行Tomcat/Weblogic发生OutOfMemoryError: PermGen space错误
- 人员角色管理
- ember.js的render过程分析
- HD1847 Good Luck in CET-4 Everybody!(巴什博弈)
- 解读ember的应用模型
- 阶乘的0
- C - The Hardest Problem Ever
- 文件查找
- Java实现双向链表(两个版本)
- ember.js提供的基础服务介绍
- 深入解读ember.js的对象体系
- codeforces 588 B Duff in Love
- 假期简单算法--快排