4074: 练5.3 开关房门
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:9
解决:4
题目描述
宾馆里有n(2≤n≤1000)个房间,从1∼n编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”…,以后每个服务员都是如此。当第n个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。)
输入
房间数n。
输出
一行,由小到大的打开门的房间序号,各序号之间用一个空格隔开。
样例输入 复制
100
样例输出 复制
1 4 9 16 25 36 49 64 81 100
提示
n=int(input()) #设置一个长度为n+1的列表,元素的初值是False a=[False]*(n+1) for i in range(1,n+1): for j in range(1,n+1): #j是i的倍数,那么第j号门被“相反出路” if j%i==0: #相反处理 a[j]=not a[j] for i in range(1,n+1): if a[i]: print(i,end=' ')