java开灯问题_C++之开灯问题(链表)

有n盏灯,编号为1~n.第1个人把所有灯打开,第2个人按下所有编号为2的倍数开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关,以此类推.一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号.k<=n<=100 样例输入    7  3 样例输出    1  5   6   7 #include #include typedef struct light{ int state; // state 为 0 时代…

开灯问题: 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推.一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号.k≤n≤1000. 附上代码: #include #include #define MAX 1000+10 int a[MAX]; int main() { , k=; //…

#include int main() { int a[1010]={0}; //储存灯的开闭情况 int n,k,i,j; scanf("%d%d",&n,&k); 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]) printf("%d ",j); } }…

[题目描述:] 首先所有的灯都是关的(注意是关!),编号为1的人走过来,把是一的倍数的灯全部打开,编号为二的的把是二的倍数的灯全部关上,编号为3的人又把是三的倍数的灯开的关上,关的开起来--直到第N个人为止. 给定N,求N轮之后,还有哪几盏是开着的. [输入格式:] 一个数N,表示灯的个数和操作的轮数 [输出格式:] 若干数,表示开着的电灯编号 [说明:] $ 1 <= N <= 2^40 $ [算法分析:] 一看n的范围就懵了,一开始想的是开一个数组模拟,\(2^40\)的一维数组是绝对是开…

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2053 题目大意:灯开始是关着的,有n盏灯,i从1数到n每当灯的序号是i的倍数的时候就对灯进行一次操作(开->关,关->开),求最后第n盏灯是关着还是开着. 解题思路:直接对第n盏灯模拟也可以,但是有规律更好不是吗~.其实就是判断n的约束奇偶性,奇数就开着,偶数就关着. 当一个数不是完全平方数:如18约数为:(3,6),(2,19),(1,15)约数个数总会是偶数,因为每个约数都有一个对应的不同的约…

题目描述 有n盏灯,一开始全是关闭的.来n个人, 第一个人把一的倍数的灯开着的关上,关上的打开. 第二个人把二的倍数的灯开着的关上,关上的打开. 第三个人把三的倍数的灯开着的关上,关上的打开. ........ 问最后第几盏灯开着. 题解 写个暴力发现开着的灯都是小于n的完全平方数啊 证明如下(参考yyb题解): 可知,第n盏灯被操作的次数为n的约数. 若 n=p1^a1*p2^a2*p3^a3*... 则n约数的个数为 (a1+1)(a2+1)(a3+1).... 若最后某盏灯亮着,那么它一定…

题目地址 分析: 用一个数组来保存每盏灯的操作的次数.推断奇偶就可以推断灯的状态. 最后的输出格式须要注意一下空格的位置,思路就是现输出一个.剩下来的输出在前面加一个空格. 空格用_表示: 1_3_5_7 代码: /* 有n盏灯,编号为1~n,第1个人把全部灯打开, 第2个人按下全部编号为2 的倍数的开关(这些灯将被关掉), 第3 个人按下全部编号为3的倍数的开关(当中关掉的灯将被打开,开着的灯将被关闭),依此类推. 一共同拥有k个人,问最后有哪些灯开着? 输入:n和k.输出开着的灯编号.k≤n…

题目背景 该题的题目是不是感到很眼熟呢? 事实上,如果你懂的方法,该题的代码简直不能再短. 但是如果你不懂得呢?那...(自己去想) 题目描述 首先所有的灯都是关的(注意是关!),编号为1的人走过来,把是一的倍数的灯全部打开,编号为二的的把是二的倍数的灯全部关上,编号为3的人又把是三的倍数的灯开的关上,关的开起来……直到第N个人为止. 给定N,求N轮之后,还有哪几盏是开着的. 输入输出格式 输入格式: 一个数N,表示灯的个数和操作的轮数 输出格式: 若干数,表示开着的电灯编号 输入输出样例 输入…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值