C语言 开灯问题
来源:互联网 发布:机器学习实战smo算法 编辑:程序博客网 时间:2024/06/05 02:13
开灯问题。有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号。k≤n≤1000。
样例输入:
7 3
样例输出:
1 5 6 7
代码如下:
#include <stdio.h>#define MAXN 1005int lamps[MAXN];int main(){ int n, k; while(2 == scanf("%d%d", &n, &k)) { int i, j; for(i = 1; i <= n; ++i) lamps[i] = 1; for(i = 2; i <= k; ++i) for(j = 1; j * i <= n; ++j) lamps[i*j] ^= 1; for(i = 1; i <= n; ++i) if(lamps[i]) printf("%d ", i); putchar('\n'); } return 0;}
看了别人的代码,感觉受益匪浅:
#include <stdio.h>#include <string.h>#define MAXN 1005int lamps[MAXN];int main(){ int n, k; while(2 == scanf("%d%d", &n, &k)) { memset(lamps, 0, sizeof(lamps)); int i, j; for(i = 1; i <= k; ++i) for(j = 1; j <= n; ++j) if(j % i == 0) lamps[j] ^= 1; for(i = 1; i <= n; ++i) if(lamps[i]) printf("%d ", i); putchar('\n'); }}
0 0
- C语言 开灯问题
- 开灯问题用C语言怎么解决 ?
- 每日一点C语言--开灯问题
- 开灯问题(语言入门)
- C语言每日小练(二)——开灯问题
- 23-语言入门-23-开灯问题
- 开灯问题
- 开灯问题
- 开灯问题
- 开灯问题
- 开灯问题
- 开灯问题
- 开灯问题
- 开灯问题
- 开灯问题
- 开灯问题
- 开灯问题
- 开灯问题
- C语言 分数化小数
- 如何打出Android程序调用stack trace
- 从上往下打印二叉树(二叉树)
- mac redis安装及简易使用
- Java知识点整理——(3)面向对象
- C语言 开灯问题
- 基础练习 FJ的字符串
- [随笔]利用云虚拟机和学校VPN实现校外访问校内站点(反向代理)
- 下一个大计算平台? Amazon Echo 研发幕后全揭露
- C语言 蛇形填数
- 小A点菜
- ObjectMapper的使用举例2 ThemeRecipe.swift
- [随笔]利用云虚拟机和学校VPN实现校外访问校内站点(反向代理)_0
- 二叉树的深度(二叉树)