某宾馆有一百个房间,从 1~100编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间作”相反处理”,第三个服务员把所有编号是3的倍数的房间再作”相反处理”……以后每个服务员都是如此。当第100个服务员来过后,问有哪几扇门是打开的。
(所谓的“相反处理”指:原来开着的门关上,原来关着的门打开。)
分析:可设置一个表示门是开的还是关的标志数组,另外由于有固定的循环次数,可用for循环。
const
n=100;
var a:array[1...n] of boolean;
i,j:integer;
beginfor i:=1 to n do a[i]:=true;
for i:=2 to n do
for j:= i to n do
if j mod i=0 then a[j]:=not(a[j]);
for i:=1 to n do
if( a[i]=true )then write(i:5);
end. 用筛法求100以内的素数。如:20以内的素数为。
分析:素数是除了1和它本身以外没有其它约数的数。用筛法求素数的方法是:
用质数筛去合数。从第一个素数2开始,把它的倍数去掉(置为0)。这样2以后的第一个非0数就一定也是素数,把它的倍数也删了……,重复这个删数过程,直到在所找到的素数之后再也找不到一个非0数为止。
最后把所有非0数输出。
vara:array [1..100] of integer;
i,j,k:integer;
beginfor i:=1 to 100 do a[i]:=i;
a[1]:=0; i:=2;
while i<=100 do
begink:=i;
while k<=100 do
begink:=k+i;
a[k]:=0 );
end;(i:=i+1 );
while a[i]=0 do( i:=i+1 );
end;for i:=1 to 100 doif ( a[i]<>0 )then write(a[i],'
end.
NOIP 数组作业四
写出程序结果 var n,m integer w array 1.10 of integer beginw 1 0 w 1 1 for n 3 to 10 do w n w n 2 w n 1 for n 1 to 10 do write w n 4 end.编写下列程序 1.小冬冬家里有7口人,每...
NOIP 数组作业二
1.读入一个十进制自然数,要求将其转换成二进制数后输出。分析 将十进数转换成二进制数,一般采用除二取余法。如果用一个数组b来存放二进制数,可以依次把所得的余数存入b 0 b 1 b n 最后按b n b n 1 b 1 b 0 的顺序输出这些余数,就得到了所求的二进制数。2.输入一串字符,字符个数不...
数组作业一
1 一个特别不爱学习的孩子,他想去学习但是又想去玩,于是他就决定通过丢硬币来抉择,他说 如是是正面就去踢足球,如果不是正面但是反面我就去打篮球,如果二者都不是,那我就去学习。自定义todotoday 方法实现这孩子的判断过程,在main 方法台输出丢硬币的结果,输出这个孩子今天将做什么事。2 重新实...