写一个java程序宾馆里有n(2≤n≤1000)个房间,从1∼n编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”…,以后每个服务员都是如此。当第n个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。)
时间: 2023-05-20 09:07:09 浏览: 88
将一个整数S随机拆分为N个在min~max之间的整数.txt
以下是Java程序:
import java.util.Arrays;
public class HotelRooms {
public static void main(String[] args) {
int n = 1000;
boolean[] rooms = new boolean[n];
Arrays.fill(rooms, true);
for (int i = 2; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (j % i == 0) {
rooms[j - 1] = !rooms[j - 1];
}
}
}
System.out.print("打开的门编号:");
for (int i = 0; i < n; i++) {
if (rooms[i]) {
System.out.print(i + 1 + " ");
}
}
}
}
输出结果为:打开的门编号:1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400 441 484 529 576 625 676 729 784 841 900 961
阅读全文