## 12 August 2014

### Quiz 9: 500 closed doors problem

Problem:
There are 500 closed doors along a corridor, numbered from 1 to 500. A person walks through the corridor and opens each door. Another person walks through the corridor and closes every alternate door. Continuing in this manner, the i-th person comes and toggles the position of every i-th door starting from door i. You are to determine exactly how many doors are open after the 500-th person has walked through the corridor.

Sample Input:
500

Sample Output:
no of doors opened after 500-th person walked through the corridor having 500 doors is 22

Solution:

\$num = 500;
@arr;
for(my \$i=0;\$i<\$num;\$i++)
{
\$arr[\$i] = 0;
}
for(my \$i=0;\$i<\$num;\$i++)
{
for(my \$j=\$i;\$j<\$num;\$j++)
{
if(\$arr[\$j] == 0)
{
\$arr[\$j]=1;
}
elsif(\$arr[\$j] == 1)
{
\$arr[\$j]=0;
}
\$j = \$j + \$i;
}
}
\$tmp = 0;
foreach(@arr){
if(\$_ == 1)
{
\$tmp++;
}
}
print "no of doors opened after \$num-th person walked through the corridor having \$num doors is \$tmp";

Tips:
• Simple solution is nearest square root ie square root of 500 is 22.36, so answer is 22