C语言,100个房间的问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 14:27:23
1、旅馆里有一百个房间,从1到100编了号,第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”……,以后都是如此。问第100个服务员来过后,哪几扇门是打开的?
前两天看到这个问题,一时想起来.希望大家帮帮忙

1
4
9
16
25
36
49
64
81
100
#include <stdio.h>
void main(){
int i,j;
int a[101]={1};
for (i=1;i<101;i++){
for (j=i;j<101;j+=i){
if (a[j]) a[j]=0;
else a[j]=1;
}
}
for (i=1;i<101;i++)
if (a[i]) printf("%d\n",i);
}

大概样子如下,自己完善吧
struct Room
{
int isOpen;
int RoomNo;
}
void ProcessRoom(i,j) //i是服务员编号,j是房间编号
{
//很简单的代码,自己填吧
}
void main()
{
for(int i=0;i<100;i++)
{
for(int j=0;j<100;j++)
{
ProcessRoom(i,j);
}
}
}

呵呵,很好证明是1到100的所有平方数是开着的。写了个暴力的程序,1表示开,0表示关

#include <stdio.h>

#define Size 100

int main( )
{
int room[ Size + 1 ], i, j;
for ( i = 1; i <= Size; i++ )
room[ i ] = 1;
for ( i = 2; i <= Size; i++ )
fo