文章标题
2016-03-06 20:15
232 查看
//开灯问题
有n盏灯,编号为1~n.第一个人把所有的灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3 的倍数的开关(开着的灯关掉,关着的灯被打开),以此类推,一共有k个人,问最后有哪些灯开着?
/*
整个算法思想,就是
for (i = 1; i <= p; i++) {
for (j = 1; j <= n; j++) {
if (j % i == 0) {
a[j] = !a[j]; //如果被碰到了就让它处于相反的状态
}
}
}
*/
int main(){
}
有n盏灯,编号为1~n.第一个人把所有的灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3 的倍数的开关(开着的灯关掉,关着的灯被打开),以此类推,一共有k个人,问最后有哪些灯开着?
/*
整个算法思想,就是
for (i = 1; i <= p; i++) {
for (j = 1; j <= n; j++) {
if (j % i == 0) {
a[j] = !a[j]; //如果被碰到了就让它处于相反的状态
}
}
}
*/
include
include
define MAXN 1000 + 10
int a[MAXN];int main(){
int i,j,p,n,first = 1; memset(a, 0, sizeof(a)); //把数组a清零 printf("请输入灯的个数和人的个数:"); scanf("%d,%d",&n,&p); for (i = 1; i <= p; 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; printf(" %d",i); }else { printf(" "); printf("%d",i); } } } printf("\n"); return 0;
}
相关文章推荐
- FZU 2191 完美的数字 (暴力)
- 利用 JavaScript 快速切换正体中文和简体中文
- Hibernate学习——(三)ID生成策略介绍
- bzoj 1803(主席树)
- 小学生之浅谈Struts2与struts1的运行机制
- Web性能优化——缓存
- 关于UITableView 的一些重用技术注意点
- Android开发系列(十一):对手机通讯录的读取、添加、删除、查找
- mongodb单机配置shard分片集群
- php中使用exec,system等函数调用系统命令
- HDU 5636:Shortest Path floyd
- Swift泛型
- SpringMVC 基于注解的Controller @RequestMapping @Request
- 面包屑导航
- BigPipe——流水线式的动态并行处理
- 浅析设计模式之观察者模式
- C语言模仿C#事件
- Android Volley完全解析(二),使用Volley加载网络图片
- nyoj42 一笔画问题
- 学生的自我修养