宾馆里有n(2≤n≤1000)个房间,从1∼n编了号。第一个服务员把所有的房间门都打开了,
第二个服务员把所有编号是2的倍数的房间“相反处理”,
第三个服务员把所有编号是3的倍数的房间作“相反处理”…,以后每个服务员都是如此。
当第n个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。)
房间数n。
一行,由小到大的打开门的房间序号,各序号之间用一个空格隔开。
100
1 4 9 16 25 36 49 64 81 100
提交 统计信息 提交记录
#include
#include<cmath>
#include<cstring>
using namespace std;
int main()
{
int a[1001],m,j,k;
scanf("%d",&m);
for(int i=1;i<=m;i++)
a[i]=1;
for(j=2;j<=m;j++)
if((i%j)==0)
a[i]*=-1;//打开的关闭,关闭的打开。哈哈
if(a[i]==1)
printf("%d ",i);
return 0;
}
京公网安备 11010502049817号