题目描述:题目链接
开灯问题
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000
-
输入
- 输入一组数据:n和k 输出
- 输出开着的灯编号 样例输入
-
7 3
样例输出
-
1 5 6 7
代码求解:
package 语言入门;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Num_77 {
public static void main(String[] args) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st=new StringTokenizer(in.readLine());
int ligthNumber= getInt(st.nextToken());
int humanNumber=getInt(st.nextToken());
int[] light=new int[ligthNumber+1];
for(int i=1;i<=humanNumber;i++)
{
ChangeLight(light,i,ligthNumber);
}
for(int i=1;i<=ligthNumber;i++)
if(light[i]==1)
System.out.print(i+" ");
}
private static void ChangeLight(int[] light, int n, int ligthNumber)
{
for(int i=1;i<=ligthNumber;i++)
{
if(i%n==0)
light[i]=1-light[i];
}
}
private static int getInt(String readLine)
{
return Integer.parseInt(readLine);
}
}