早教吧 育儿知识 作业答案 考试题库 百科 知识分享

pascal喝醉的狱卒FromAdmin喝醉的狱卒描述Description在一所监狱里有一条长长的走廊,沿着走廊排列着n个牢房。每个牢房有一个囚犯,而且房门都是锁着的。一天晚上,狱

题目详情
pascal喝醉的狱卒
From Admin
喝醉的狱卒


描述 Description
  在一所监狱里有一条长长的走廊,沿着走廊排列着n个牢房。每个牢房有一个囚犯,而且房门都是锁着的。
  一天晚上,狱卒觉得很无聊,于是他决定玩一个游戏。第一轮,他喝了一口威士忌,然后沿着走廊,将所有牢房的门打开。第二轮,他又喝了一口威士忌,然后又沿着走廊,将所有编号为2的倍数的牢房锁上。第三轮,他再喝一口威士忌,再沿着走廊,视察所有编号为3的倍数的牢房。如果牢房是锁着的,他就把它打开;如果牢房是开着的,他就把他锁上。他如此玩了n轮后,喝下最后一口威士忌,醉倒了。
当他醉倒后,一些犯人发现他们的牢房开着而且狱卒已经无能为力。他们立刻逃跑了。
给出若干个牢房的数目,请你确认各有多少犯人逃出了监狱。



输入格式 Input Format
输入文件的第一行为一个正整数。表示接下来的输入有多少行。接着每一行为一个不大于10000的整数,表示牢房的数目n。


输出格式 Output Format
对于每个n,你必须输出当监狱有n个牢房时逃跑的犯人的数目。


样例输入 Sample Input
【输入样例1】
2
5
100



样例输出 Sample Output
【输出样例1】
2
10
▼优质解答
答案和解析
var
n:integer;
a:array[1..10000] of boolean;
i,j:integer;
begin
read(n);
for i:=1 to n do a[i]:=false;
for i:=1 to n do
for j:=1 to n do
if j mod i=0 then
if a[j] then a[j]:=false
else a[j]:=true;
j:=0;
for i:=1 to n do
if a[i] then j:=j+1;
write(j);
end.