nyoj77-开灯问题(倍数遍历)(代码片段)

GetcharZp GetcharZp     2022-11-18     775

关键词:

77-开灯问题

 

    内存限制:64MB 时间限制:3000ms 特判: No

 

    通过数:13 提交数:24 难度:1


题目描述:

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

输入描述:

输入一组数据:n和k

输出描述:

输出开着的灯编号

样例输入:

7 3

样例输出:

1 5 6 7

分析:
  1、通过数组存原先的状态;
  2、以其倍数关系遍历数组,改变该位置的状态

C/C++代码实现(AC):
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <stack>
 7 #include <map>
 8 #include <queue>
 9 #include <set>
10 
11 using namespace std;
12 const int MAXN = 1005;
13 int f[MAXN] = 0;
14 
15 int main()
16 
17     int n, k;
18     scanf("%d%d", &n, &k);
19     for (int i = 1; i <= k; ++ i)
20     
21         for (int j = i; j <= n; j += i)
22         
23             if (f[j] == 0) f[j] = 1;
24             else f[j] = 0;
25         
26     
27     for (int i = 1; i <= n; ++ i)
28         if (f[i])
29             printf("%d ", i);
30     return 0;
31 

 

开灯问题(代码片段)

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

开灯问题(代码片段)

题目:有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关,第3个人按下所有编号为2倍数的开关(其中关掉的被打开,开着灯的将会被关掉),以此类推。一共K个人,最后有哪些灯是开着的?输... 查看详情

开灯问题(代码片段)

有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后... 查看详情

nyoj公约数和公倍数(代码片段)

...sp;| 内存限制:65535 KB难度:1 描述小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。 输入第一行输入一个整数n(0<n<=10000),表示有n组测试数据;... 查看详情

开灯问题

有n盏灯,编号为1~n,第一个人把所有灯打开,第二个人按下所有编号为2的倍数开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),一次类推,一共有k个人,问最后哪些... 查看详情

nyoj40-公约数和公倍数(gcd)(代码片段)

...制:1000msSpecialJudge:Noaccepted:30submit:47题目描述:小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。输入描述:第一行输入一个整数n(0<n<=10000),表示有n组测试数据;... 查看详情

nyoj53-不高兴的小明(遍历)(代码片段)

...0msSpecialJudge:Noaccepted:28submit:89题目描述:  小明又出问题了。妈妈认为聪明的小明应该更加用功学习而变的更加厉害,所以小明除了上学之外,还要参加妈妈为他报名的各科复习班。另外每周妈妈还会送他去学习朗诵、舞蹈... 查看详情

开灯问题

开灯问题时间限制:3000ms           内存限制:65535KB难度:1描述有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有... 查看详情

开灯问题

问题描述:     开灯问题,有n盏灯,编号为1~n。第一个人把所有灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着... 查看详情

nyoj202——红黑树(代码片段)

...看了看红黑树,结果大佬告诉我:左旋右旋不会影响中序遍历......然后就写了个简单的中序遍历......#include<bits/stdc++.h>usingnamespacestd;constintmaxn=20;structnodeintdata;intlchild,rchild;nd[maxn];voidmid_search(intk)if(k!= 查看详情

开灯问题--------《算法竞赛入门指导》p83

开灯问题。有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个... 查看详情

开灯问题-----00004

描述有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k... 查看详情

开灯问题(代码片段)

#include<stdio.h>#include<math.h>//算法竞赛的目标是编程对任意输入均得到正确的结果。//请先独立完成,如果有困难可以翻阅本书代码仓库中的答案,但一定要再次独立完成。//“抓住主要矛盾”——始终把学习、实验的焦点... 查看详情

文巾解题77.组合(代码片段)

1题目描述2 解题思路 如果解决一个问题有多个步骤,每一个步骤有多种方法,题目又要我们找出所有的方法,可以使用回溯算法;回溯算法是在一棵树上的 深度优先遍历(因为要找所有的解,所以需要... 查看详情

反转开灯问题facetherightway(代码片段)

题目FarmerJohnhasarrangedhisN(1≤N≤5,000)cowsinarowandmanyofthemarefacingforward,likegoodcows.Someofthemarefacingbackward,though,andheneedsthemalltofaceforwardtomakehislifeperfect.Fortunately,FJrecentlyboughtanautomaticcowturningmachine.Sincehepurchasedthediscountmodel,itmustbeirrevocablypres... 查看详情

反转开灯问题facetherightway(代码片段)

题目FarmerJohnhasarrangedhisN(1≤N≤5,000)cowsinarowandmanyofthemarefacingforward,likegoodcows.Someofthemarefacingbackward,though,andheneedsthemalltofaceforwardtomakehislifeperfect.Fortunately,FJrecentlyboughtanautomaticcowturningmachine.Sincehepurchasedthediscountmodel,itmustbeirrevocablypres... 查看详情

leetcode-二叉树的层序遍历-77(代码片段)

题目要求  给你一个二叉树,请你返回其按层序遍历得到的节点值。(即逐层地,从左到右访问所有节点)。解析  广度优先搜索,入队出队代码实现classSolutionpublic:vector<vector<int>>levelOrder(TreeNode*... 查看详情

开灯和蛇形

...头绪,看了答案之后才慢慢能理解,嘛,一步一步来吧。开灯问题,有n盏灯,编号为1-n,第一个人把所有的灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3倍数的开关(其中关... 查看详情