THE DRUNK JAILER
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 25124 | Accepted: 15767 |
Description
A certain * contains a long hall of n cells, each right next to each other. Each cell has a *er in it, and each cell is locked.
One night, the jailer gets bored and decides to play a game. For round 1 of the game, he takes a drink of whiskey,and then runs down the hall unlocking each cell. For round 2, he takes a drink of whiskey, and then runs down the
hall locking every other cell (cells 2, 4, 6, ?). For round 3, he takes a drink of whiskey, and then runs down the hall. He visits every third cell (cells 3, 6, 9, ?). If the cell is locked, he unlocks it; if it is unlocked, he locks it. He
repeats this for n rounds, takes a final drink, and passes out.
Some number of *ers, possibly zero, realizes that their cells are unlocked and the jailer is incapacitated. They immediately escape.
Given the number of cells, determine how many *ers escape jail.
One night, the jailer gets bored and decides to play a game. For round 1 of the game, he takes a drink of whiskey,and then runs down the hall unlocking each cell. For round 2, he takes a drink of whiskey, and then runs down the
hall locking every other cell (cells 2, 4, 6, ?). For round 3, he takes a drink of whiskey, and then runs down the hall. He visits every third cell (cells 3, 6, 9, ?). If the cell is locked, he unlocks it; if it is unlocked, he locks it. He
repeats this for n rounds, takes a final drink, and passes out.
Some number of *ers, possibly zero, realizes that their cells are unlocked and the jailer is incapacitated. They immediately escape.
Given the number of cells, determine how many *ers escape jail.
Input
The first line of input contains a single positive integer. This is the number of lines that follow. Each of the following lines contains a single integer between 5 and 100, inclusive, which is the number of cells n.
Output
For each line, you must print out the number of *ers that escape when the * has n cells.
Sample Input
2
5
100
Sample Output
2
10 题意:第一个人把所有的牢房全部打开,第二个人把是2的倍数的牢房全部锁上,第三个人对是3的倍数的牢房进行操作,如果是锁上的就把它打开,如果是打开的就把它锁上,依次第4个人...直到第n个人完成操作,问最后有多少间牢房是打开的
#include<stdio.h>
#include<string.h>
int a[110];
int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
int sum=0;
scanf("%d",&n);
memset(a,0,sizeof(a));
for(j=1;j<=n;j++)
{
for(i=1;i<=n;i++)
{
if(i%j==0)
{
if(a[i]==0)
a[i]=1;
else if(a[i]==1)
a[i]=0;
}
}
}
for(i=1;i<=n;i++)
if(a[i]==1)
sum++;
printf("%d\n",sum);
}
return 0;
}