qqqqqqqqqqqqqqqqqqqqqq
有n盏灯,编号1~n(0<n<100)。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依次类推。输入灯数和人数,输出开着的灯的编号。
比如输入:10 2输出最后亮灯的编号:1,3,5,7,9 注意:使用循环语句实现。
以下是用Java实现的代码:
java
Copy code
import java.util.ArrayList;
import java.util.Scanner;
public class ToggleLights {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入灯数和人数,以空格分隔:");
int n = scanner.nextInt();
int people = scanner.nextInt();
String result = toggleLights(n, people);
System.out.println("最后亮灯的编号:" + result);
scanner.close();
}
public static String toggleLights(int n, int people) {
boolean[] lights = new boolean[n]; // 初始化所有灯都是关闭的
for (int person = 1; person <= people; person++) { // 依次表示每个人
for (int lightIndex = person - 1; lightIndex < n; lightIndex += person) { // 对应当前人按下的开关
lights[lightIndex] = !lights[lightIndex]; // 切换灯的状态
}
}
ArrayList<Integer> result = new ArrayList<>();
for (int i = 0; i < n; i++) {
if (lights[i]) {
result.add(i + 1); // 收集最后亮着的灯的编号
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < result.size(); i++) {
sb.append(result.get(i));
if (i < result.size() - 1) {
sb.append(", ");
}
}
return sb.toString();
}
}
您可以将此代码保存到ToggleLights.java文件中,然后编译并运行。程序将提示您输入灯数和人数,然后输出最后亮着的灯的编号。
太厉害了,感谢