NOIP 数组作业三

发布 2022-09-05 02:57:28 阅读 7262

某宾馆有一百个房间,从 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 重新实...