NOIP2000_2010普及组初赛-完善程序-题目

NOIP2000_2010普及组初赛-完善程序-题目
NOIP2000_2010普及组初赛-完善程序-题目

四.完善程序(前8空,每空3分,后2空,每空2分,共28分)

1.(最大连续子段和)给出一个数列(元素个数不多于100),数列元素均为负整数、正整数、0。请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为4,-5,3,2,4时,输出9和3;数列为1 2 3 -5 0 7 8时,输出16和7。

var

a: array[1..100] of integer;

n, i, ans, len, tmp, beg: integer;

begin

read(n);

for i := 1 to n do read(a[i]);

tmp := 0; ans := 0; len := 0;

beg :=(1);

for i := 1 to n do

begin

if tmp + a[i] > ans then

begin

ans := tmp + a[i];

len := i - beg;

end

else

if ((2)) and (i - beg > len) then len := i - beg;

if tmp + a[i] (3)then

begin

beg :=(4);

tmp := 0;

end

else

(5);

end;

writeln(ans, ' ', len);

end.

2. (国王放置)在n*m的棋盘上放置k个国王,要求k个国王互相不攻击,有多少种不同的放置方法。

假设国王放置在第(x,y)格,国王的攻击的区域是:

(x-1,y-1), (x-1,y),(x-1,y+1),(x,y-1),(x,y+1),(x+1,y-1),(x+1,y),(x+1,y+1)。读入三个数n,m,k,输出答案。题目利用回溯法求解。棋盘行标号为0~n-1,列标号为0~m-1。

var

n, m, k, ans: integer;

hash: array[0..4, 0..4] of integer;

procedure work(x, y, tot: integer);

var

i, j: integer;

begin

if tot = k then begin inc(ans); exit; end;

repeat

while hash[x, y] <> 0 do

begin

inc(y);

if y = m then begin inc(x); y :=(6); end;

if x = n then exit;

end;

for i := x - 1 to x + 1 do

if (i >= 0) and (i < n) then

for j := y - 1 to y + 1 do

if (j >= 0) and (j < m) then (7);

(8);

for i := x - 1 to x + 1 do

if (i >= 0) and (i < n) then

for j := y - 1 to y + 1 do

if (j >= 0) and (j < m) then (9);

inc(y);

if y = m then begin inc(x); y := 0; end;

if x = n then exit;

until false;

end;

begin

read(n, m, k);

ans := 0;

fillchar(hash, sizeof(hash), 0);

(10);

writeln(ans);

end.

四.完善程序(前四空,每空2.5分,后6空,每空3分,共28分)

1.(字符串替换)给定一个字符串S(S仅包含大小写字母),下面的程序将S中的每个字母用规定的字母替换,并输出S经过替换后的结果。程序的输入是两个字符串,第一个字符串是给定的字符串S,第二个字符串S’由26个字母组成,它是a~z的任一排列,大小写不定,S’规定了每个字母对应的替换字母:S’中的第一个字母是字母A和a的替换字母,即S中的A用该字母的大写替换,S中的a用该字母的小写替换;S’中的第二个字母是字母B 和b的替换字母,即S中的B用该字母的大写替换,S中的b用该字母的小写替换;……以此类推。var

change:string; str:string;

procedure checkchangerule;

var i:integer;

begin

for i:=1 to 26 do

begin

if (1) then

change[i]:=chr(ord(change[i])-ord('A')+ord('a')); end;

end;

procedure changestring;

var len,i:integer;

begin

len:=length(str);

for i:=1 to len do

begin

if (2) then

begin str[i]:=upcase(change[ord(str[i]-ord('A')+1]);end

else

begin (3) end;

end;

end;

begin

readln(str);

readln(change);

checkchangerule;

(4) ;

writeln(str);

end.

以类似快速排序的方法找到序列中第n大的数(关于第n大的数:例如序列{1,2,3,4,5,6}中第3大的数是4。)

Var

a:array[1..1000000] of integer;

n,m,ans:integer;

procedure swap(var a,b:integer);

var

t:integer;

begin

if (a<>b) then begin t:=a; a:=b; b:=t; end;

end;

function findkth(left,right,n:integer):integer;

var

tmp,value,i,j:integer;

begin

if left=right then exit(left);

tmp:=random(right-left)+left;

swap(a[tmp],a[left]);

value:= (5) ;

i:=left; j:=right;

while i

begin

while (i

if i

while (i

if i

end;

(8)

if i

if i>n then begin dec(i); exit((10)); end;

exit(i);

end;

var

i:integer;

begin

randomize;

m:=1000000;

for i:=1 to m do read(a[i]));

read(n);

ans:=findkth(1,m,n);

writeln(a[ans]);

end.

四.完善程序(前4 空,每空2.5 分,后6 空,每空3 分,共28 分)

1.(求字符串的逆序)下面的程序的功能是输入若干行字符串,每输入一行,就按逆序输出该行,最后键入-1 终止程序。请将程序补充完整。

program j401;

type str1=string[100];

var

line:str1;kz:integer;

procedure reverse(var s:str1);

var

i,j:integer;t:char;

begin

i:=1; j:=length(s);

while (i

begin

t:=s[i]; s[i]:=s[j]; s[j]:=t;

(1) ; (2) ;

end;

end;

begin

writeln('continue? -1 for end.');readln(kz);

while (3) do

begin

readln(line);

(4) ;

writeln(line);

writeln('continue? -1 for end.');

readln(kz);

end;

end.

格),称之为特殊方格。现用L 型(占3 个小格)纸片覆盖棋盘上除特殊方格的所有部分,各纸片不得重叠,于是,用到的纸片数恰好是(4k ?1) / 3。在下表给出的一个覆盖方案中,k=2,相同的3个数字构成一个纸片。

下面给出的程序是用分治法设计的,将棋盘一分为四,依次处理左上角、右上角、左下角、右下角,递归进行。请将程序补充完整。

2 2

3 3

2 -1 1 3

4 1 1 5

4 4

5 5

program j402;

type

arr1=array[1..65] of integer;arr2=array[1..65] of arr1;

var

board:arr2;tile:integer;size,dr,dc:integer;

procedure chessboard(tr,tc:integer;dr,dc:integer;var size:integer);

var

t,s:integer;

begin

if (size=1) then (5) ;

t:=tile; inc(tile);

s:=size div 2;

if (6) then chessboard(tr,tc,dr,dc,s)

else

begin

board[tr+s-1][tc+s-1]:=t;

(7) ;

end;

if (dr=tc+s) then chessboard(tr,tc+s,dr,dc,s)

else

begin

board[tr+s-1][tc+s]:=t;

(8) ;

end;

if (dr>=tr+s) and(dc

else

begin

board[tr+s][tc+s-1]:=t;

(9) ;

end;

if (dr>=tr+s) and (dc>=tc+s) then chessboard(tr+s,tc+s,dr,dc,s)

else

begin

board[tr+s][tc+s]:=t;

(10) ;

end;

end;

procedure prt1(n:integer);

var

begin

for i:=1 to n do

begin

for j:=1 to n do write(board[i][j]:3);

writeln;

end;

end;

begin

writeln('input size(4/8/16/64):');

readln(size);

writeln('input the position of special block(x,y):');

readln(dr,dc);

board[dr][dc]:=-1;

tile:=1;

chessboard(1,1,dr,dc,size);

prt1(size);

end.

四.完善程序(前4空,每空2.5分,后6空,每空3分,共28分)

1.(全排列)下面程序的功能是利用递归方法生成从1到n(n<10)的n个数的全部可能的排列(不一定按升序输出)。例如,输入3,则应该输出(每行输出5个排列):

123 132 213 231 321

312

程序:

Program ex401;

var

i,n,k:integer;

a:array[1..10] of integer;

count:longint; {变量count记录不同排列的个数,这里用于控制换行}

Procedure perm(k:integer);

var

j,p,t:integer;

begin

if (1) then

begin

inc(count);

for p:=1 to k do write(a[p]:1);

write(' ');

if ((2) ) then writeln;

exit;

end;

for j:=k to n do

begin

t:=a[k]; a[k]:=a[j]; a[j]:=t;

(3);

t:=a[k]; (4);

end

end;

begin

writeln('Entry n:');

read(n);

count:=0;

for i:=1 to n do a[i]:=i;

(5);

end.

给定的条件下,解S 必存在)。要求在屏幕上依次输出以下结果:

(1)S 的全部数字。除最后一行外,每行输出50 位数字。(2) 乘积的数字位数。

例1:输入p=13,由于13*8547=111111,则应输出(1)8547,(2)6

例2:输入p=147,则输出结果应为(1)755857898715041572184429327286470143613

(2)42,即等式的右端有42个1。

程序:

program ex402;

var

p,a,b,c,t,n:longint;

begin

while (true) do

begin

writeln ('Input p, the last digit is 1 or 3 or 7 or 9:');

readln(p);

if (p mod 2<>0)and(p mod 5<>0) then (1); {如果输入的数符合要求,结束循环}

end;

a:=0; n:=0;

while (a

begin

a:=a*10+1; inc(n);

end;

t:=0;

repeat

b:=a div p;

write(b:1);

inc(t);

if ((2)) then writeln;

c:= (3); a:= (4); inc(n);

until c<=0;

dec(n);

writeln; writeln('n=', (5));

end.

四.完善程序(前4空,每空2分,后5空,每空4分,共28分)

1.判断质数

题目描述:

给出一个正整数,判断这个数是否是质数。

输入:

一个正整数n(1 <= n <= 10000)。

输出:

如果n是质数,输出”yes”;否则,输出”no”。

输入样例:

10

输出样例:

no

程序:

var

(1) : integer;

begin

read(n);

if n = 2 then writeln((2))

else if ((3)) or (n mod 2 = 0) then writeln('no')

else begin

i := 3;

while i * i <= n do begin

if(4) then begin

writeln('no'); exit;

end;

i := i + 2;

end;

writeln('yes');

end;

end.

2.木材加工

题目描述:

木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段木头的最大长度。木头长度的单位是cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度也是正整数。

输入:

第一行是两个正整数n和k(1 <= n <= 10000,1 <= k <= 10000),n是原木的数目,k是需要得到的小段的数目。接下来的n行,每行有一个1到10000之间的正整数,表示一根原木的长度。

输出:

输出能够切割得到的小段的最大长度。如果连1cm长的小段都切不出来,输出”0”。

输入样例:

3 7

232

124

456

输出样例:

114

程序:

var

n, k : integer;

len : array [1..10000] of integer;

i, left, right, mid : integer;

function isok(t : integer) : boolean;

var

num, i : integer;

begin

num := 0;

for i := 1 to n do

begin

if num >= k then break;

num := (1) ;

end;

if (2) then isok := true

else isok := false;

end;

begin

readln(n, k);

right := 0;

for i := 1 to n do

begin

readln(len[i]);

if right < len[i] then right := len[i];

end;

inc(right); (3) ;

while(4)< right do

begin

mid := (left + right) div 2;

if (5) then right := mid

else left := mid;

end;

writeln(left);

end.

四、完善程序(前4空,每空2分,后5空,每空4分,共28分)

1.三角形内切圆的面积

题目描述:

给出三角形三边的边长,求此三角形内切圆(如下图所示,三角形的内切圆是和三角形三边都相切的圆)的面积。

输入:

三个正实数a、b、c(满足a+b>c,b+c>a,c+a>b), 表示三角形三边的边长。

输出:

三角形内切圆的面积,结果四舍五入到小数点后面2位。

输入样例:

3 4 5

输出样例:

3.14

程序:

program program1;

var

a, b, c, r, s, t: real;

begin

read(a, b, c);

s := ((1)) / 2;

t :=(2) (s * (s - a) * (s - b) * (s - c));

r := t / s;

writeln(3.1415927 * r *(3) : 0 : (4));

end.

题目描述:

原始的joseph问题的描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1,…,n。从编号是1的人开始报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m个人又出列,…,如此反复直到所有的人全部出列为止。比如当n=6,m=5的时候,出列的顺序依次是5,4,6,2,3,1。

现在的问题是:假设有k个好人和k个坏人。好人的编号的1到k,坏人的编号是k+1到2k。我们希望求出m 的最小值,使得最先出列的k个人都是坏人。

输入:

仅有的一个数字是k(0 < k <14)。

输出:

使得最先出列的k个人都是坏人的m的最小值。

输入样例:

4

输出样例:

30

程序:

program program2;

var

i, k, m, start: longint;

find: boolean;

function check(remain: integer): boolean;

var result: integer;

begin

result:=((1)) mod remain;

if((2))then begin

start := result; check := true;

end

else check := false;

end;

begin

find := false;

read(k);

m := k;

while ((3)) do

begin

find := true; start := 0;

for i := 0 to k-1 do

if( not check((4))) then

begin

find := false; break;

end;

inc(m);

end;

writeln((5));

end.

四、完善程序(第1空2分,其余每空3分共28分)

1.一元二次方程

题目描述:

方程ax^2+bx+c=0,要求给出它的实数解.

输入:

三个实数:a,b,c,是方程的三个系数(a≠0).

输出:

如果无实数解,则输出"no solution";

如果有两个相等的实数解,则输出其中一个,四舍五入到小数点后面3位;

如果有两个不等的实数解,则解与解之间用逗号隔开,同样要四舍五入到小数点后3位。输入样例:

l 2 1

输出样例:

-1.000

程序:

program program41;

var

a,b,c,m:real;

begin

read (a,b,c);

m:=b*b -4*a*c;

if ((1))then begin

write ((2):0:3);

write( ` , ` );

write ((-1*b-sqrt(m))/(2*a):0:(3) );

end

else if (4)then write((5))

else begin

write (`no solution`);

end

end.

题目描述:

一摞硬币共有m枚,每一枚都是正面朝上。取下最上面的一枚硬币,将它翻面后放回原处。然后取下最上面的2枚硬币,将他们一起翻面后再放回原处。再取3枚,取4枚……直至m枚。然后再从这摞硬币最上面的一枚开始,重复刚才的做法。这样一直做下去,直到这摞硬币中的每一枚又都是正面朝上为止。例如,m为1时,翻两次即可。m为2时,翻3次即可;m为3时,翻9次即可;m为4时,翻11次即可;m为5时,翻24次即可;…;m为30时,翻899次即可;…

输入:

仅有的一个数字是这摞硬币的枚数m,0

输出:

为了使这摞硬币中的每一枚又都是正面朝上所必需翻的次数。

输入样例:

30

输出样例:

899

程序:

program programl;

var

m:integer;

function solve (m:integer):integer;

vat

i,t,d:integer;

flag:boolean;

begin

if (m=1)then so1ve:=(1) ;

else

begin

d:=2*m+1;t:= 2;i:= 1;flag:=false;

repeat

if (t=1) then begin

solve:=(2)

flag:=true;

end

else if ((3)) then begin

solve:=i*m-1;

flag:=true;

end

else

t:=(4);

i:=i+1;

until flag;

end

end;

begin

read (m);

if ((m>0) and (m<1000=then writeln ((4));

end.

四.完善程序: (共30分)

1.问题描述:将n个整数分成k组(k<=n,要求每组不能为空),显然这k个部分均可得到一个各自的和s1,s2,……sk,定义整数p为:p=(s1-s2)2+(s1一s3)2+……+(s1-s k)2+(s2-s3)2+……+(s k-1-s k)2

问题求解:求出一种分法,使p为最小(若有多种方案仅记一种)(2.5×6=15分)

程序说明:

数组:a[1],a[2],...a[n]存放原数,s[1],s[2],...,s[k]存放每个部分的和

b[1],b[2],...,b[n]穷举用临时空间,d[1],d[2],...,d[n]存放最佳方案

程序:

program exp4;

var i,j,n,k : integer;

a :array [1..100] of integer;b,d:array [0..100] of integer;s :array[1..30] of integer;

begin

readln(n,k);

for i:=1 to n do read(a[i]);

for i:=0 to n do b[i]:=1;

cmin:=1000000;

while (b[0]=1) do

begin

for i:=1 to k do (1);

for i:=1 to n do (2);

sum:=0;

for i:=1 to k-1 do

for j:= (3)

sum:=sum+(s[i]-s[j])*(s[i]-s[j]);

if (4) then begin

cmin:=sum;

for i:=1 to n do d[i]:=b[i];

end;

j:=n;

while (5)do j:=j-1;

b[j]:=b[j]+1;

for i:=j+1 to n do (6);

end;

writeln(cmin);

for i:=1 to n do write(d[i]:40);

writeln;

end.

2. 问题描述:工厂在每天的生产中,需要一定数量的零件,同时也可以知道每天生产一个零件的生产单价。在n天的生产中,当天生产的零件可以满足当天的需要,若当天用不完,可以放到下一天去使用,但要收取每个零件的保管费,不同的天收取的费用也不相同。(3×5=15分)

问题求解:求得一个n天的生产计划(即n天中每天应生产零件个数),使总的费用最少。

输入:n(天数n<=29)

每天的需求量(n个整数) 每天生产零件的单价(n个整数) 每天保管零件的单价(n个整数)

输出:每天的生产零件个数(n个整数)

例如:当n=3时,其需要量与费用如下:

生产计划的安排可以有许多方案,如下面的三种:

程序说明:

b[n]:存放每天的需求量c[n]:每天生产零件的单价d[n]:每天保管零件的单价e[n]:生产计划

var

i,j,n,yu,j0,j1,s:integer;

b,c,d,e: array[0..30]of integer;

begin

readln(n);

for i:=1 to n do readln(b[[i],c[i],d[i]];

fori:=1 to n do e[i]:=0;

(1):=10000;c[n+2]:=0;b[n+1]:=0;jo:=1;

while (jo<=n)do

begin

yu:=c[j0]; j1:=jo; s:=b[j0];

while (2) do

begin

(3); j1:=j1+1;s:=s+b[j1];

end;

(4);jo:=j1+1;

end;

for i:=1 to n do(5);

readln;

end.

四、完善程序(每空3分共27分)

1.输入n个0到100之间的整数,由小到大排序输出,每行输出8个程序清单:

program chu7_5;

var

i,j,k,n,x:integer;

b:array[0..100]of integer;

begin

readln(n);

for i:=0 to 100 do b[i]:=0;

for i:=1 to n do

begin

readln(x);

b[x]:= (1);

end;

(2);

for i:=0 to 100 do

while (3) do

begin

write ((4)) ;

k:=k+1;

b[i]:=b[i]-1;

if (5) then writeln

end;

readln

end.

干条路段(各路段数<=20,且每条路段上的距离均为一个整数)。

a,b的一条通路是指:从a出发,可经过任一路段到达s1,再从s1出发经过任一路段,…最后到达b。通路上路段距离之和称为通路距离(最大距离<=1000)。当所有的路段距离给出之后,求出所有不同距离的通路

个数(相同距离仅记一次)。

例如:下图所示是当n=1时的情况:

从a到b的通路条数为6,但因其中通路5+5=4+6,

所以满足条件的不同距离的通路条数为5。

算法说明:本题采用穷举算法。

数据结构:n:记录a,b间路站的个数

数组d[i,0]记录第i-1到第i路站间路段的个数

d[i,1],d[i,2],…记录每个路段距离

数组g记录可取到的距离

程序清单:

program chu7_6;

var

i,j,n,s:integer;

b:array[0..100]of integer;

d:array[0..100,0..20]of integer;

g :array[0..1000]of 0..1;

begin

readln(n);

for i:=1 to n+1 do

begin

readln(d[i,0]);

for j:=1 to d[i,0]do readln(d[i,j]);

end;

d[0,0]:=1;

for i:=1 to n+1 do b[i]:=1;

b[0]:=0;

for i:=0 to 1000 do g[i]:=0;

while (1) do

begin

s:=0;

for i:=1 to n+1 do

j:=n+1;

while (3)do j:=j-1;

b[j]:=b[j]+1;

for i:=j+1 to n+1 do b[i]:=1;

end;

s:=0;

for i:=1 to 1000 do

readln;

end.

四、完善程序(每题15分,共30分)

1.将2n个0和2n个1,排成一圈。从任一个位置开始,每次按逆时针的方向以

长度为n+1的单位进行数二进制数。要求给出一种排法,用上面的方法产生

出来的2n+1个二进制数都不相同。当n=2时, 即22个0 和22个1 排成如

下一圈:

比如,从a位置开始,逆时针方向取三个数000,然后再从b位置上开始取

三个数001,接着从c开始取三个数010,...可以得到000,001,010,101,

011,111,110,100共8个二进制数且都不相同。

程序说明

以n=4为例,即有16个0,16个1,数组a用以记录32个0,1的排法,数组b统计二进制数是否已出现过。

程序清单

program noi00;

var

a : array[1..36] of 0..1;

b : array[0..31] of integer;

i, j, k, s, p : integer;

begin

for i:=1 to 36 do a[i]:=0;

for i:=28 to 32 do a[i]:=1;

p:=1; a[6]:=1;

while (p=1) do

begin

j:=27;

while a[j]=1 do j:=j-1;

(1)

for i:=j+1 to 27 do(2)

for i:=0 to 31 do b[i]:=0;

for i:=1 to 32 do

begin

(3)

for k:=i to i+4 do s:=s*2+a[k];

end;

s:=0;

for i:=0 to 31 do s:=s+b[i];

if (5) then p:=0

end;

for i:=1 to 32 do for j:=i to i+4 do write(a[j]);

writeln

end.

NOIP2012初赛普及组C++题目及答案

第十八届全国青少年信息学奥林匹克联赛初赛 (普及组C++语言试题) 竞赛时间:2012年10月13日14:30~16:30 选手注意: ●试题纸共有10页,答题纸共有2页,满分100分。请在答题纸上作答,写在试题纸上一律无效。 ●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料 一、单项选择题(共20题,每题1.5分,共计30分;每题且仅有一个正确选项) 1.计算机如果缺少(),将无法正常启动。 A.内存B.鼠标C.U盘D.摄像头 2.()是一种先进先出的线性表。 A.栈B.队列C.哈希表(散列表)D.二叉树 3.目前计算机芯片(集成电路)制造的主要原料是(),它是一种可以在沙子中提炼出的物质。 A.硅B.铜C.锗D.铝 4.十六进制数9A在()进制下是232。 A.四B.八C.十D.十二 5.()不属于操作系统。 A.Windows B.DOS C.Photoshop D.NOI Linux 6.如果一棵二叉树的中序遍历是BAC,那么它的先序遍历不可能是()。 A.ABC B.CBA C.ACB D.BAC 7.目前个人电脑的()市场占有率最靠前的厂商包括Intel、AMD等公司。 A.显示器B.CPU C.内存D.鼠标 8.使用冒泡排序对序列进行升序排列,每执行一次交换操作系统将会减少1个逆序对,因此序列5,4,3,2,1需要执行()次操作,才能完成冒泡排序。 A.0 B.5 C.10 D.15 9.1946年诞生于美国宾夕法尼亚大学的ENIAC属于()计算机。 A.电子管B.晶体管C.集成电路D.超大规模集成电路 10.无论是TCP/IP模型还是OSI模型,都可以视为网络的分层模型,每个网络协议都会被归入某一层中。如果用现实生活中的例子来比喻这些“层”,以下最恰当的是()。 A.中国公司的经理与波兰公司的经理交互商业文件

NOIP2011普及组复赛(试题+源程序)

NOIP2011 普及组复赛 1 .数字反转(reverse.cpp/c/pas ) 【问题描述】 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为 零,否则反转后得到的新数的最高位数字不应为零。(参见样例2) 【输入】 输入文件名为reverse. in 。 输入共一行,一个整数No 【输出】 输出文件名为reverse.out 。 输出共1行,一个整数,表示反转后的新数。 【输入输出样例1】 -1,000,000,000 < N< 1,000,000,000 。 【解题】这道题非常简单,可以读字符串处理,也可以读数字来处理,只不过要注意符号问题(以及但测试数据没出)。 -0 , 【法一】字符串处理 Var i,l,k:i nteger; s:stri ng; p:boolea n; begin assig n(i nput, 'reverse.i n'); reset(i nput); assig n(o utput, 'reverse.out'); rewrite(output); readl n( s); l:=le ngth(s); k:=1; if s[1]=' -' the n begin write('-'); k:=2; en d; p:=true;; for i:=l dow nto k do begin if(p)a nd((s[i]='0')) the n continue else begin write(s[i]); p:=false;; en d; en d; close(i nput); close(output); en d. 【法二】数字处理 Var f:i nteger; n,an s:lo ngint; begin assig n(i nput, 'reverse.i n'); reset(i nput); assig n(o utput, 'reverse.out'); rewrite(output); readl n(n); if n<0 the n begin f:=-1; n :=-n;

NOIP2015初赛普及组C++题目及答案 (2)

选手注意:第二十一届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2015年10月11日14:3016:30

试题纸共有7页,答题纸共有2页,满分100分。请在答题纸上作答,写在试题纸上的一律无效。 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。 一、单项选择题(共20题,每题分,共计30分;每题有且仅有一个正确选项) 1. 1MB等于()。 字节字节字节字节 2. 在PC机中,PENTIUM (奔腾)、酷睿、赛扬等是指()。 A.生产厂家名称 B.硬盘的型号的型号 D.显示器的型号 3. 操作系统的作用是()。 A.把源程序译成目标程序 B.便于进行数据管理 C. 控制和管理系统资源 D.实现硬件之间的连接 4. 在计算机内部用来传送、存贮、加工处理的数据或指令都是以()形式进行的。 A.二进制码 B.八进制码 C.十进制码 D.智能拼音码 5. 下列说法正确的是()。 A. CPU的主要任务是执行数据运算和程序控制 B. 存储器具有记忆能力,其中信息任何时 候都不会丢失C. 两个显示器屏幕尺寸相 同,则它们的分辨率必定相同D. 个人 用户只能使用Wifi的方式连接到Internet 6. 二进制数00100100和00010100的和是()。 A. 00101000 01000001 7. 与二进制小数相等的十六进制数是() A. 0.8 0.4 所谓的“中断”是指()。 A. 操作系统随意停止一个程序的运行 B. 当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的过 程 C. 因停机而停止一个程序的运行 D. 电脑死机 9. 计算机病毐是()。 A. 通过计算机传播的危害人体健康的一种病毒 B. 人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合 C. 一种由于计算机元器件老化而产生的对生态环境有害的物质 D. 利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒可以用于()。 A.远程传输文件 B.发送电子邮件 C.浏览网页 D.网上聊天 11.下面哪种软件不属于即时通信软件()。 C..P2P 个顶点的连通图的最小生成树,其边数为()。 5 13.链表不具备的特点是()。

(完整word)NOIP2010提高组初赛试题及详细解析

第十六届全国青少年信息学奥林匹克联赛初赛试题 ( 提高组 C++ 语言 两小时完成 ) ? ? 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ?? 、单项选择题 (共 10 题,每题 1.5 分,共计 15 分。每题有且仅有一个正确选项。 ) 1.与十六进制数 A1.2 等值的十进制数是( ) A . 101.2 B . 111.4 C . 161.125 D . 177.25 &主存储器的存取速度比中央处理器 (CPU )的工作速度慢的多,从而使得后者的效率受到影响。而 根据局部性原理,CPU 所访问的存储单元通常都趋于一个较小的连续区域中。于是,为了提高系统 整体的执行 效率,在 CPU 中引入了( )。 A .寄存器 B .高速缓存 C .闪存 D .外存 9.完全二叉树的顺序存储方案,是指将完全二叉树的结点从上到下、从左到右依次存放到一个顺序 结构的数组中。假定根结点存放在数组的 1 号位置上,则第 k 号结点的父结点如果存在的话,应当 存放在数组中的( )号位置。 A .2k B .2k+1 C .k/2 下取整 D .(k+1)/2 2.一个字节( byte )由( )个二进制组成。 A .8 B .16 上都有可能 3.以下逻辑表达式的值恒为真的是( )。 A . P V (n P A Q )V (n P 心 Q ) B C . P V Q V ( P A n Q )V (n P A Q ) D 4 . Linux 下可执行文件的默认扩展名是 ( ) 。 A. exe B. com 都不是 C . 32 D .以 Q V( n P A Q )V (P A n Q ) P V n Q V( P A n Q V (n P A n Q) C. dll D. 以上 5 .如果在某个进制下等式 7*7=41 成立,那么在该进制下等式 12*12= ( A. 100 B. 144 C. 164 )也成立。 D. 196 6 .提出“存储程序”的计算机工作原理的是( A. 克劳德 ?香农 B. 戈登?摩尔 )。 C. 查尔斯 ?巴比奇 D. 冯?诺依曼 7 .前缀表达式“ + 3 * 2 + 5 12 ” 的值是( )。 A. 23 B. 25 C. 37 D. 6

noip2011初赛试题及答案(完美Word版)

第十七届全国青少年信息学奥林匹克联赛初赛试题 (提高组 Pascal语言两小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、单项选择题(共20题,每题1.5分。共计30分。每题有且仅有一个正确选项。) B 1.在二进制下,1100011 +()= 1110000。 A.1011 B.1101 C.1010 D.1111 B 2.字符“A”的ASCII码为十六进制41,则字符“Z”的ASCII码为十六进制的()。A.66 B.5A C.50 D.视具体的计算机而定 A 3.右图是一棵二叉树,它的先序遍历是()。 A.ABDEFC B.DBEFAC C.DFEBCA D.ABCDEF D 4.寄存器是()的重要组成部分。 A.硬盘B.高速缓存C.内存D.中央处理器(CPU) B 5.广度优先搜索时,需要用到的数据结构是()。 A.链表B.队列C.栈D.散列表 A 6.在使用高级语言编写程序时,一般提到的“空间复杂度”中的“空间”是指()。 A.程序运行时理论上所占的内存空间 B.程序运行时理论上所占的数组空间 C.程序运行时理论上所占的硬盘空间 D.程序源文件理论上所占的硬盘空间 C 7.应用快速排序的分治思想,可以实现一个求第K大数的程序。假定不考虑极端的最坏情况,理论上可以实现的最低的算法时间复杂度为()。 A.O(n2)B.O(n log n)C.O(n) D.O(1) D 8.为解决Web应用中的不兼容问题,保障信息的顺利流通,()制定了一系列标准,涉及HTML、XML、CSS等,并建议开发者遵循。 A.微软 B.美国计算机协会(ACM) C.联台国教科文组织D.万维网联盟(W3C)

noip2016普及组初赛试题+答案

NOIP2016第二十二届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2016年10月22日14:30~16:30 选手注意: 1、试题纸共有8 页,答题纸共有2 页,满分100 分。请在答题纸上作答,写在试题纸上的一律无效。 2、不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。 一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项) 1.以下不是微软公司出品的软件是( )。 A.Powerpoint B.Word C.Excel D. Acrobat Reader 2.如果256种颜色用二进制编码来表示,至少需要( )位。 A.6 B.7 C.8 D.9 3.以下不属于无线通信技术的是( )。 A.蓝牙B.WiFi C.GPRS D.以太网 4.以下不是CPU生产厂商的是( )。 A.Intel B.AMD C.Microsoft D.IBM 5.以下不是存储设备的是( )。 A.光盘B.磁盘C.固态硬盘D.鼠标 6.如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、字母键A、字母键S 和字母键D的顺序循环按键,即CapsLock、A、S、D、CapsLock、A、S、D、……,屏幕上输出的第81个字符是字母( )。 A.A B.S C.D D.a 7.二进制数00101100和00010101的和是( )。 A.00101000 B.01000001 C.01000100 D.00111000 8.与二进制小数0.1相等的八进制数是( )。 A.0.8 B.0.4 C.0.2 D.0.1 9.以下是32位机器和64位机器的区别的是( )。 A.显示器不同B.硬盘大小不同 C.寻址空间不同D.输入法不同 10.以下关于字符串的判定语句中正确的是( ) A.字符串是一种特殊的线性表B.串的长度必须大于零 C.字符串不可以用数组来表示D.空格字符组成的串就是空串 11.一棵二叉树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二 叉树中的结点(根结点的下标为1,若某结点的下标为i,则其左孩子位于下标2i 处、右孩子位于下标(2i+1)处),则图中所有结点的最大下标为( ) 。 A.6 B.10 C.12 D.15 12.若有如下程序段,其中s、a、b、c均己定义为整型变量,且a、c均己赋值(c大于0)。 s=a; for (b=1;b<=c;b++) s=s+1; 则与上述程序段修改s值的功能等价的赋值语句是( )。 A. s=a+b; B. s=a+c; C. s=s+c; D. s=b+c; 13.有以下程序: #include using namespace std;

NOIP2015普及组解题报告

NOIP2015 普及组解题报告 From 贴吧id u007zzt 金币 国王将金币作为工资,发放给忠诚的骑士。 第一天骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天,每天收到四枚金币,以此类推;这种工资发放模式会一直延续下去,当连续N天收到N枚金币后,骑士会在之后的N+1天,每天收到N+1枚金币。 请计算前K天里,骑士一共获得了多少金币。 输入格式 输入包含一个正整数K,表示发放金币的天数。 输出格式 输出一个正整数,即骑士收到的金币数。 样例1 样例输入1 6 样例输出1 14 样例2 样例输入2 1000 样例输出2 29820 对于全部数据,1≤K≤10000。 这种题目,简直就属于水题狂做的那种。不多说,附C++代码。 #include "stdio.h" int k,ans=0; int main(){ freopen("coin.in","r",stdin); freopen("coin.out","w",stdout); scanf("%d",&k); int i=1; while(k){ if(k>=i){ ans+=i*i; k-=i; }else{ ans+=k*i; k=0;

} i++; } printf("%d\n",ans); return 0; } 扫雷游戏 扫雷游戏是一款十分经典的单机小游戏。 在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。 玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。 游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。 现在给出n行m列的雷区中的地雷分布,要求计算出每个非地雷格周围的地雷格数。 注:一个格子的周围格子包括其上、下、左、右、左上、左下、右上、右下八个方向上与之直接相邻的格子。 输入格式 第一行用一个空格隔开的两个整数n和m,分别表示雷区的行数和列数。 接下来n行,每行m个字符,描述了雷区中的地雷分布情况。字符?'表示相应的格子是地雷格,字符(?)`表示相应的格子是非地雷格子。相邻字符之间无分隔符。 输出格式 输出文件包括n行,每行m个字符,描述了整个雷区。用?表示地雷格,用周围地雷格数表示非地雷格。相邻字符之间无分隔符。 样例1 样例输入1 3 3 *?? ??? ?*? 样例输出1 *10 221 1*1 样例2 样例输入2 2 3 ?*? *?? 样例输出2 2*1 *21

NOIP2015信息学奥赛普及组初赛C++试题

2015年第二十一届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛日寸间:2015年10月l 1日14:30~16:30 选手注意: ●试题纸共有7页,答题纸共有2页,满分100分。请在答题纸上作答,写在试题纸上的一律无效。 ●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。 一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选 项) 1.1MB等于( )。 A.1000字节B.1024字节 C.1000X 1000字节D.1024X 1024字节 2.在PC机中,PENTIUM(奔腾)、酷睿、赛扬等是指( )。 A.生产厂家名称B.硬盘的型号C.CPU的型号D.显示器的型号 3.操作系统的作用是( )。 A.把源程序译成目标程序B.便于进行数据管理 C.控制和管理系统资源D.实现硬件之间的连接 4.在计算机内部用来传送、存贮、加工处理的数据或指令都是以( )形式进行的。 A.二进制码B.八进制码C.十进制码D.智能拼音码 5.下列说法正确的是( )。 A.CPU的主要任务是执行数据运算和程序控制 B.存储器具有记忆能力,其中信息任何时候都不会丢失 C.两个显示器屏幕尺寸相同,则它们的分辨率必定相同 D.个人用户只能使用Wifi的方式连接到Internet 6.二进制数00100100和00010100的和是( )。 A. 00101000 B. 01001001 C. 01000100 D.00111000 7.与二进制小数0.1相等的十六进制数是( )。 A.0.8 B.0.4 C.0.2 D.0.1 8.所谓的“中断”是指( )。 A.操作系统随意停止一个程序的运行 B.当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的过程 C.因停机而停止一个程序的运行 D.电脑死机 9.计算机病毒是( )。 A.通过计算机传播的危害人体健康的一种病毒 B.人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合 C.一种由于计算机元器件老化而产生的对生态环境有害的物质 D.利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒 10.FTP可以用于( )。 A.远程传输文件B.发送电子邮件C.浏览网页D.网上聊天 11.下面哪种软件不属于即时通信软件( )。 A.QQ B.MSN C.微信D.P2P 12.6个顶点的连通图的最小生成树,其边数为( )。 A. 6 B. 5 C.7 D. 4 13.链表不具备的特点是( )。 A.可随机访问任何一个元素 B.插入、删除操作不需要移动元素

NOIP2017普及组初赛试题及答案

NOIP2017普及组初赛试题及答案 一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项) 1.在8位二进制补码中,10101011表示的数是十进制下的( )。 A. 43 B. -85 C. -43 D. -84 2.计算机存储数据的基本单位是( )。 A. bit B. Byte C. GB D. KB 3.下列协议中与电子邮件无关的是( )。 A. POP3 B. SMTP C. WTO D. IMAP 4.分辨率为800x600、16位色的位图,存储图像信息所需的空间为( )。 A.937.5KB B. 4218.75KB C.4320KB D. 2880KB 5.计算机应用的最早领域是( )。 A.数值计算 B.人工智能 C.机器人 D.过程控制 6.下列不属于面向对象程序设计语言的是( )。 A. C B. C++ C. Java D. C# 7.NOI的中文意思是( )。 A.中国信息学联赛

B.全国青少年信息学奥林匹克竞赛 C.中国青少年信息学奥林匹克竞赛 D.中国计算机协会 8. 2017年10月1日是星期日,1999年10月1日是( )。 A.星期三 B.星期日 C.星期五 D.星期二 9.甲、乙、丙三位同学选修课程,从4门课程中,甲选修2门,乙、丙各选修3门,则不同的选修方案共有( )种。 A. 36 B. 48 C. 96 D. 192 10.设G是有n个结点、m条边(n ≤m)的连通图,必须删去G的( )条边,才能使得G变成一棵树。 A.m–n+1 B. m-n C. m+n+1 D.n–m+1 11.对于给定的序列{ak},我们把(i, j)称为逆序对当且仅当i < j且ai> aj。那么 序列1, 7, 2, 3, 5, 4的逆序对数为()个。 A. 4 B. 5 C. 6 D. 7 12.表达式a * (b + c) * d的后缀形式是()。 A. abcd*+* B. abc+*d* C. a*bc+*d D. b+c*a*d 13.向一个栈顶指针为hs的链式栈中插入一个指针s指向的结点时,应执行( )。

NOIP2015普及组复赛解题报告

精心整理 NOIP2015普及组解题报告 南京师范大学附属中学树人学校CT 1.金币(coin.cpp/c/pas) 【问题描述】 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天) 放模式会一直这样延续下去:当连续N 续N+1天里,每天收到N+1枚金币。 请计算在前K 【输入格式】 输入文件名为coin.in。 输入文件只有1 【数据说明】 对于100%的数据,1≤K≤10,000。 【思路】 模拟 【时空复杂度】 O(k),O(1)

2、扫雷游戏(mine.cpp/c/pas) 【问题描述】 扫雷游戏是一款十分经典的单机小游戏。在n行m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的目标是在不翻出任何地雷格的条件下,找出所有的非地雷格。 现在给出n行m 向上与之直接相邻的格子。 【输入格式】 输入文件名为mine.in。 接下来n行,每行m 雷个数表示非地雷格。相邻字符之间无分隔符。 【数据说明】 对于100%的数据,1≤n≤100,1≤m≤100。 【思路】 模拟 【技巧】

可将数组多开一圈,省去边界条件的判断。【时空复杂度】 O(mn),O(mn)

3.求和(sum.cpp/c/pas) 【问题描述】 一条狭长的纸带被均匀划分出了n个格子,格子编号从1到n。每个格子上都染了一种颜色color i(用[1,m]当中的一个整数表示),并且写了一个数字number i。 定义一种特殊的三元组:(x,y,z),其中x,y,z都代表纸带上格子的编号,这里的三元组要求满足以下两个条件: 1.x,y,z都是整数,x

noip2017普及组初赛试题+答案

第23届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2017年10 月14 日14:30~16:30 选手注意: 1、试题纸共有8 页,答题纸共有2 页,满分100 分。请在答题纸上作答,写在试题纸上的一律无效。 2、不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。 一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项) 1.在 8 位二进制补码中,10101011 表示的数是十进制下的( )。 A. 43 B. -85 C. -43 D. -84 解析:补码就是符号位不变,其他各位逐位求反再加一 结论:-85 答案B 2.计算机存储数据的基本单位是( )。 A. bit B. Byte C. GB D. KB 3.下列协议中与电子邮件无关的是( )。 A. POP3 B. SMTP C. WTO D. IMAP 4.分辨率为 800x600、16 位色的位图,存储图像信息所需的空间为( )。 A.937.5KB B. 4218.75KB C.4320KB D. 2880KB 解析:800*600*16/8=A 5.计算机应用的最早领域是( )。 A. 数值计算 B. 人工智能 C. 机器人 D. 过程控制 6.下列不属于面向对象程序设计语言的是( )。 A. C B. C++ C. Java D. C# 解析:新出的语言都是面向对象的,OOP的,旧的不是,答案A 7.NOI 的中文意思是( )。 A. 中国信息学联赛 B. 全国青少年信息学奥林匹克竞赛 C. 中国青少年信息学奥林匹克竞赛 D. 中国计算机协会 解析:全国青少年信息学奥林匹克竞赛 答案:B 8. 2017年10月1日是星期日,1999年10月1日是( )。 A. 星期三 B. 星期日

NOIP2015初赛普及组C++试题及参考答案

第二十一届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2015年10月11日14:30-16:30 一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项) ⒈1MB等于( )。 A.10000字节 B.1024字节 C.1000×1000字节 D.1024×1024字节 ⒉在PC机中,PENTIUM(奔腾)、酷睿、赛扬等是指( )。A.生 产厂家名称 B.硬盘的型号 C.CPU的型号 D.显示器的型号 ⒊操作系统的作用是( )。 A.把源程序译成目标程序 B.便于进行数据管理 C.控制和管理系统资源 D.实现硬件之间的连接 ⒋在计算机内部用来传送、存贮、加工处理的数据或指令都是以( )形式进行的。 A.二进制码 B.八进制码 C.十进制码 D.智能拼音码 ⒌下列说法正确的是( )。 A.CPU的主要任务是执行数据运算和程序控制 B.存储器具有记忆能力,其 中信息任何时候都不会丢失C.两个显示器屏幕尺寸相同,则它们的分辨率 必定相同D.个人用户只能使用Wifi的方式连接到Internet ⒍二进制数00100100和00010100的和是( )。 A.00101000 B.01100111 C.01000100 D.00111000 ⒎与二进制小数0.1相等的十六进制数是( )。 A.0.8 B.0.4 C.0.2 D.0.1 ⒏所谓的“中断”是指( )。A.操 作系统随意停止一个程序的运行 B.当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的过程 C.因停机而停止一个程序的运行 D.电脑死机 ⒐计算机病毒是( )。A.通过计算机传播的 危害人体健康的一种病毒 B.人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合 C.一种由于计算机元器件老化而产生的对生态环境有害的物质 D.利用计算 机的海量高速运算能力而研制出来的用于疾病预防的新型病毒 ⒑FTP可以用于( )。 A.远程传输文件 B.发送电子邮件 C.浏览网页 D.网上聊天 ⒒下面哪种软件不属于即时通信软件( )。 A.QQ B.MSN C.微信 D.P2P

2018NOIP普及组初赛试题

第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2018 年10 月13 日14:30~16:30 选手注意: 试题纸共有7 页,答题纸共有2 页,满分100 分。请在答题纸上作答,写在试题纸上的一律无效。 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。 一、单项选择题(共15 题,每题2 分,共计30 分;每题有且仅有一个正确选项) 1、以下哪一种设备属于输出设备:() A.扫描仪 B. 键盘 C. 鼠标 D. 打印机 2、下列四个不同进制的数中,与其它三项数值上不相等的是()。 A.(269)16 B.(617)10 C.(1151)8 D.(1001101011)2 3、1MB 等于()。 A.1000 字节 B. B. 1024 字节 C.1000 X 1000 字节 D. D. 1024 X 1024 字节 4、广域网的英文缩写是()。 https://www.360docs.net/doc/dd12512216.html,N B.WAN C.MAN D.LNA 5、中国计算机学会于()年创办全国青少年计算机程序设计竞赛。 A.1983 B.1984 C.1985 D.1986 6、如果开始时计算机处于小写输入状态,现在有一只小老鼠反复按照CapsLock、 字母键A、字母键S、字母键D、字母键F 的顺序循环按键,即CapsLock、A、S、D、F、CapsLock、A、S、D、F、??,屏幕上输出的第81 个字符是字母

( )。 A. A B. S C. D D. a 7、根节点深度为0,一棵深度为h 的满k(k>1)叉树,即除最后一层无任何子节点外,每一层上的所有结点都有k 个子结点的树,共有()个结点。 A.(k h+1 - 1) / (k - 1) B.k h-1 C.k h D.(k h-1) / (k - 1) 8、以下排序算法中,不需要进行关键字比较操作的算法是()。 A.基数排序 B.冒泡排序 C.堆排序 D.直接插入排序 9、给定一个含N 个不相同数字的数组,在最坏情况下,找出其中最大或最小的数,至少需要N - 1 次比较操作。则最坏情况下,在该数组中同时找最大与最小的数至少需要()次比较操作。(? ? 表示向上取整,? ? 表示向下取整) A.? 3N / 2? - 2 B.? 3N / 2? - 2 C.2N - 2 D.2N - 4 10、下面的故事与()算法有着异曲同工之妙。从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:“从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事??'” A.枚举 B. 递归 C. 贪心 D. 分治 11、由四个没有区别的点构成的简单无向连通图的个数是()。 A. 6 B.7 C.8 D.9 12、设含有10 个元素的集合的全部子集数为S,其中由7 个元素组成的子集数为 T,则T / S 的值为()。 A. 5 / 32 B.15 / 128 C. 1 / 8 D.21 / 128 13、10000 以内,与10000 互质的正整数有()个。 A. 2000 B.4000 C.6000 D.8000

noip2015初赛普及组答案分析

单项选择题 1.A。计算机内部的用来传送、存贮、加工处理的数据或指令都是以二进制形式进行的。 2.A。写这题我用的是排除法,B选项显然不对,内存在断电后数据会丢失,C选项也是,屏幕的分辨率是可以手动调整的,D选项,当年我们都用宽带连接Internet的。 3.A。二进制小数转化为十六进制小数时,每四位二进制数转化为以为 十六进制数,故0.10002可以转化为0.816。 4.D。我的做法是将每个数都化为二进制形式,因为十六进制数和八进 制数转化为二进制数很容易,最后求得答案是D。 5.D。在链表中,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域,结点与结点之间是用指针 连接的,故地址不必连续。 6.B。模拟一下进栈出栈的过程就行了,共有6次操作:进栈,进栈,出栈,进栈,进栈,出栈,每次操作后栈内元素分别为”a”,”a b”,”a”,”a b c”,”a b c d”,”a b c”,故最后栈顶元素是c。 7.B。前序遍历的顺序是”根->左->右”,后序遍历的顺序是”左->右->根”,对照四个答案,只有B能满足题目要求。 8.B。我们知道树高为n的满二叉树的结点个数为2n?1,当树高为5 时结点个数为31,当树高为6时结点个数为63,故答案是B。 9.B。画一张图的事情,就不说了。 10.D。由递推公式可得T(n)=1+(1+2+…+n)=n2+n2+1,故算法时间 的复杂度为O(n2)。 11.D。用vector存边,由一个顶点的边引到另一个顶点,再不断引出别的顶点,过程中每个顶点和每条边都只用到一遍,故复杂度为O(n+e)。12.A。哈夫曼算法用来求哈夫曼树,此树的特点就是引出的路程最短, 求的过程运用到贪心思想,具体的请参考一下别的文章。 13.D。llink和rlink分别指向前驱和后继,不妨设p的前驱为o,在未插入前 p->llink就是o,o->rlink就是p,插入时,先将o->rlink赋为q,再将 q->rlink赋为p,然后将q->llink赋为o,最后将p->llink赋为q。 14.A。最粗暴的方法就是直接模拟,不知道有没有更先进的算法。 15.A。- -丨这题猜猜都是A,哪有考生自带鼠标的。

noip2011 初赛普及组c++试题及答案

NOIP2011 (普及组 C++语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确选项。) 1.在二进制下,1011001 + ()= 1100110。 A.1011 B.1101 C.1010 D.1111 2.字符“0”的ASCII码为48,则字符“9”的ASCII码为()。 A.39 B.57 C.120 D.视具体的计算机而定 3.一片容量为8G的SD卡能储存大约()张大小为2MB的数码照片。 A.1600 B.2000 C.4000 D.16000 4.摩尔定律(Moore's law)是由英特尔创始人之一戈登·摩尔(Gordon Moor)提出来的。根据摩尔定律,在过去几十年一级在可预测的未来纪念,单块集成电驴的集成度大约每()个月翻一番。A.1 B.6C.18 D.36 5.无向完全图是图中每对顶点之间都恰好有一条边的简单图。已知无向完全图G有7个顶点,则它共有()条边。 A.7 B.21 C.42 D.49 6.寄存器是()的重要组成部分。 A.硬盘B.高速缓存C.内存D.中央处理器(CPU) 7.如果根结点的深度记为1,则一棵恰有2011个叶结点的二叉树的深度最少是()。 A.10 B.11 C.12 D.13 8.体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。每个同学按顺序来到操场时,都从排尾走到排头,找到第一个比自己高的同学,并站在他的后面。这种站队的方法类似于()算法。 A.快速排序B.插入排序C.冒泡排序D.归并排序 9.一个正整数在二进制下有100位,则它在十六进制下有()位。 A.7 B.13 C.25 D.不能确定 10.有人认为,在个人电脑送修前,将文件放入回收站中就是已经将其删除了。这种想法是()。 A.正确的,将文件放入回收站以为着彻底删除、无法恢复 B.不正确的,只有将回收站清空后,才意味着彻底删除、无法恢复 C.不正确的,即使回收站清空,文件只是被标记为删除,仍可能通过回复软件找回 D.不正确的,只要在硬盘上出现过的文件,永远不可能被彻底删除

NOIP2017初赛普及组C++试题及答案

第二十三届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 竞赛时间:2017年10月14日14:30~16:30 选手注意: ●试题纸共有7 页,答题纸共有2 页,满分100 分。请在答题纸上作答,写在试题纸上的一律无效。 ●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。一、单项选择题(共20 题,每题 1.5 分,共计30 分;每题有且仅有一个正确选项) 1. 在8 位二进制补码中,10101011 表示的数是十进制下的()。 A. 43 B. -85 C. -43 D. -84 2. 计算机存储数据的基本单位是()。 A. bit B. Byte C. GB D. KB 3.下列协议中与电子邮件无关的是()。 A. POP3 B. SMTP C. WTO D. IMAP 4. 分辨率为800x600、16 位色的位图,存储图像信息所需的空间为()。 A. 937.5KB B. 4218.75KB C. 4320KB D. 2880KB 5. 计算机应用的最早领域是()。 A. 数值计算 B. 人工智能 C. 机器人 D. 过程控制 6.下列不属于面向对象程序设计语言的是()。 A. C B. C++ C. Java D. C#

7. NOI 的中文意思是()。 A. 中国信息学联赛 B. 全国青少年信息学奥林匹克竞赛 C. 中国青少年信息学奥林匹克竞赛 D. 中国计算机协会 8. 2017 年10 月1 日是星期日,1999 年10 月1 日是()。 A. 星期三 B. 星期日 C. 星期五 D. 星期二 9.甲、乙、丙三位同学选修课程,从4 门课程中,甲选修2 门,乙、丙各选修3门,则不同的选修方案共有()种。 A. 36 B. 48 C. 96 D. 192 10. 设G 是有n 个结点、m 条边(n ≤ m)的连通图,必须删去G 的()条边,才能使得G 变成一棵树。 A. m – n + 1 B. m - n C. m + n + 1 D. n – m + 1 11. 对于给定的序列{ak},我们把(i, j) 称为逆序对当且仅当i < j 且ai > aj。那么 序列1, 7, 2, 3, 5, 4 的逆序对数为()个。 A. 4 B. 5 C. 6 D. 7 12. 表达式a * (b + c) * d 的后缀形式是()。 A. a b c d * + * B. a b c + * d * C. a * b c + * d D. b + c * a * d 13.向一个栈顶指针为hs 的链式栈中插入一个指针s 指向的结点时,应执行()。 A.hs->next = s; B.s->next = hs; hs = s; C.s->next = hs->next; hs->next = s; D.s->next = hs; hs = hs->next; 14. 若串S = “copyright”,其子串的个数是()。 A. 72 B. 45 C. 46 D. 36 15. 十进制小数13.375 对应的二进制数是()。 A. 1101.011 B. 1011.011 C. 1101.101 D. 1010.01

NOIP2011普及组

数字反转题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形 式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。【数据范围】 -1,000,000,000 ≤ N≤ 1,000,000,000。 输入格式 输入共 1 行,一个整数N。 输出格式 输出共 1 行,一个整数,表示反转后的新数。 样例输入: 123 -380 样例输出: 321 -83 统计单词数题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位 置,有的还能统计出特定单词在文章中出现的次数。 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章 中出现的次数和第一次出现的位置。注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。 【数据范围】 1 ≤ 单词长度≤ 10。 1 ≤ 文章长度≤ 1,000,000。 【输入输出样例 1 说明】 输出结果表示给定的单词To 在文章中出现两次,第一次出现的位置为0。 【输入输出样例 2 说明】 表示给定的单词to 在文章中没有出现,输出整数-1。 输入格式 第 1 行为一个字符串,其中只含字母,表示给定单词; 第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。

输出格式 只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开, 分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字 母在文章中的位置,位置从0 开始);如果单词在文章中没有出现,则直接输出一个整数-1。 样例输入: [sample 1] To to be or not to be is a question [sample 2] to Did the Ottoman Empire lose its power at that time 样例输出: [sample 1] 2 0 [sample 2] -1 瑞士轮题目描述 2*N名编号为1~2N的选手共进行R轮比赛。每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名。选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和。总分相同的,约定编号较小的选手排名靠前。 每轮比赛的对阵安排与该轮比赛开始前的排名有关:第1名和第2名、第3名和第4名、……、第2K-1名和第2K名、……、第2N-1名和第2N名,各进行一场比赛。每场比赛胜者得1分,负者得0分。也就是说除了首轮以外,其它轮比赛的安排均不能事先确定,而是要取决于选手在之前比赛中的表现。 现给定每个选手的初始分数及其实力值,试计算在R轮比赛过后,排名第Q的选手编号是多少。我 们假设选手的实力值两两不同,且每场比赛中实力值较高的总能获胜。 输入格式 输入的第一行是三个正整数N、R、Q,每两个数之间用一个空格隔开,表示有2*N名选手、R轮比赛,以及我们关心的名次Q。 第二行是2*N个非负整数s1,s2,…,s2N,每两个数之间用一个空格隔开,其中si表示编号为i 的选手的初始分数。 第三行是2*N个正整数w1,w2,…,w2N,每两个数之间用一个空格隔开,其中wi表示编号为i 的选手的实力值。 输出格式

NOIP2015普及组复赛试题

CCF全国信息学奥林匹克联赛(NOIP2015)复赛 普及组 (请选手务必仔细阅读本页内容) 一、题目概况 中文题目名称金币扫雷游戏求和推销员 coin mine sum salesman 英文题目与子目 录名 可执行文件名coin mine sum salesman 输入文件名coin.in mine.in sum.in salesman.in 输出文件名coin.out mine.out sum.out salesman.out 每个测试点时限1秒 测试点数目10 每个测试点分值10 附加样例文件有 结果比较方式全文比较(过滤行末空格及文末回车) 题目类型传统 运行内存上限128M 二、提交源程序文件名 对于C++语言coin.cpp mine.cpp sum.cpp salesman.cpp 对于C语言coin.c mine.c sum.c salesman.c 对于Pascal语言coin.pas mine.pas sum.pas salesman.pas 四、注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm)II x2240processor,2.8GHz,内存4G,上述时限以此配置为准。 4、只提供Linux格式附加样例文件。 5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。

1.金币 (coin.cpp/c/pas) 【问题描述】 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币。 请计算在前K天里,骑士一共获得了多少金币。 【输入格式】 输入文件名为coin.in。 输入文件只有1行,包含一个正整数K,表示发放金币的天数。 【输出格式】 输出文件名为coin.out。 输出文件只有1行,包含一个正整数,即骑士收到的金币数。 【输入输出样例1】 coin.in coin.out 614 见选手目录下的coin/coin1.in和coin/coin1.ans。 【输入输出样例1说明】 骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。因此一共收到1+2+2+3+3+3=14枚金币。 【输入输出样例2】 coin.in coin.out 100029820 见选手目录下的coin/coin2.in和coin/coin2.ans。 【数据说明】 对于100%的数据,1≤K≤10,000。

相关文档
最新文档