文档库 最新最全的文档下载
当前位置:文档库 › NOIP2008普及组复赛试题(附题解)

NOIP2008普及组复赛试题(附题解)

NOIP2008普及组复赛试题(附题解)
NOIP2008普及组复赛试题(附题解)

全国信息学奥林匹克联赛(NOIP2008)复赛

普及组

注意事项:

1、文件名(程序名和输入输出文件名)必须使用小写。

2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3、全国统一评测时采用的机器配置为:CPU 1.9GHz,内存512M,上述时限以此配置为准。

各省在自测时可根据具体配置调整时限。

1.ISBN号码

(isbn.pas/c/cpp)

【问题描述】

每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。

识别码的计算方法如下:

首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。

你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。

【输入】

输入文件isbn.in只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。

【输出】

输出文件isbn.out共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。

一、ISBN号码

基础字符串处理题,心细一点的基本都能得满分。

参考程序:

program isbn;

const

inp='isbn.in';

oup='isbn.out';

var

i,j,k,ans:longint;

s:string;

ch:char;

procedure flink;

begin

assign(input,inp);

reset(input);

assign(output,oup);

rewrite(output); end;

procedure fclose;

begin

close(input);

close(output);

end;

begin

flink;

readln(s);// 输入字符串j:=0;

i:=1;

ans:=0;

while j<9 do

begin

if s[i] in ['0'..'9'] then//如果是数字,那么累加到ans中,共9个数字

begin

inc(j);

inc(ans,(ord(s[i])-ord('0'))*j);

end;

inc(i);

end;

ans:=ans mod 11;计算识别码

if ans=10 then ch:='X' else ch:=chr(ord('0')+ans);//把识别码转换成字符,方便

输出

if s[length(s)]=ch

then write('Right')

else write(copy(s,1,12)+ch);//输出正确的识别码

fclose;

end.

2.排座椅

(seat.pas/c/cpp)

【问题描述】

上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。同学们在教室中坐成了M行N列,坐在第i行第j列

的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道。于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。

请你帮忙给小雪编写一个程序,给出最好的通道划分方案。在该方案下,上课时交头接耳的学生对数最少。

【输入】

输入文件seat.in的第一行,有5各用空格隔开的整数,分别是M,N,K,L,D(2<=N,M<=1000,0<=K

接下来D行,每行有4个用空格隔开的整数,第i行的4个整数X i,Y i,P i,Q i,表示坐在位置(X i,Y i)与(P i,Q i)的两个同学会交头接耳(输入保证他们前后相邻或者左右相邻)。

输入数据保证最优方案的唯一性。

【输出】

输出文件seat.out共两行。

第一行包含K个整数,a1a2……a K,表示第a1行和a1+1行之间、第a2行和第a2+1行之间、…、第a K行和第a K+1行之间要开辟通道,其中a i< a i+1,每两个整数之间用空格隔开(行尾没有空格)。

第二行包含L个整数,b1b2……b k,表示第b1列和b1+1列之间、第b2列和第b2+1列之间、…、第b L列和第b L+1列之间要开辟通道,其中b i< b i+1,每两个整数之间用空格隔开(行尾没有空格)。

【输入输出样例解释】

上图中用符号*、※、+ 标出了3对会交头接耳的学生的位置,图中3条粗线的位置表示通

道,图示的通道划分方案是唯一的最佳方案。

本题贪心可以得满分的。

当然本题的贪心需要预处理下,开2个一维数组,row[i] 记录如果在第i行加通道,可以分割多少对调皮学生,col[i]记录如果在第j列加通道,可以分割多少对调皮学生,最后贪心法输出分割学生最多的前K行和前L列。

参考程序:

program seat;

const

inp='seat.in';

oup='seat.out';

var

flag,m,n,k,l,d,i,j,x,y,x1,y1:longint; tmp,col,row:array[1..1000] of longint; s,s1:ansistring;

procedure flink;

begin

assign(input,inp);

reset(input);

assign(output,oup);

rewrite(output);

end;

procedure fclose;

begin

close(input);

close(output);

end;

function min(a,b:longint):longint; begin

if a

procedure qsort(m,n:Longint);//快排

var

i,j,k,t:longint;

begin

i:=m; j:=n; k:=tmp[(i+j) shr 1];

repeat

while tmp[i]>k do inc(i);

while tmp[j]

if i<=j then

begin

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

inc(I); dec(J);

end;

until i>j;

if m

if I

end;

begin

flink;

readln(m,n,k,L,d);

fillchar(row,sizeof(row),0);

fillchar(col,sizeof(col),0);

for i:= 1 to d do //统计在每行、每列添加通道可以分割的学生数

begin

readln(x,y,x1,y1);

if (x=x1)

then inc(col[min(y,y1)])

else inc(row[min(x,x1)]);

end;

j:=0;

for i:= 1 to m do //把能没个行通道分割的学生数加入tmp数组,准备排序begin

if row[i]>0 then

begin

inc(j);

tmp[j]:=row[i];

end;

end;

qsort(1,j);//对tmp数组排序

flag:=tmp[k];//flag为前K项的最小值

i:=1; j:=0;

while (i<=n) and (j

begin

if row[i]>=flag then //如果该行能分割的人数不少于flag,说明此处可以添加通道

begin

write(i);

inc(j);

if j<>k then write(' ');

end;

inc(i);

end;

writeln;

//下面是求列通道,思想同上

j:=0;

for i:= 1 to n do

begin

if col[i]>0 then

begin

inc(j);

tmp[j]:=col[i];

end;

end;

qsort(1,j);

flag:=tmp[L];

i:=1; j:=0;

while (i<=m) and (j

begin

if col[i]>=flag then

begin

write(i);

inc(j);

if j<>L then write(' ');

end;

inc(i);

end;

fclose;

end.

3.传球游戏

(ball.pas/c/cpp)

【问题描述】

上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。

游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没传出去的那个同学就是败者,要给大家表演一个节目。

聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次以后,又回到小蛮手里。两种传球的方法被视作不同的方法,当且仅当这两种方法中,接到球的同学按接球顺序组成的序列是不同的。比如有3个同学1号、2号、3号,并假设小蛮为1号,球传了3次回到小蛮手里的方式有1->2->3->1和1->3->2->1,共2种。

【输入】

输入文件ball.in共一行,有两个用空格隔开的整数n,m(3<=n<=30,1<=m<=30)。【输出】

输出文件ball.out共一行,有一个整数,表示符合题意的方法数。

【输入输出样例】

【限制】

40%的数据满足:3<=n<=30,1<=m<=20

100%的数据满足:3<=n<=30,1<=m<=30

直接dp,似乎说递推更确切点。

f(i,k)表示经过k次传到编号为i的人手中的方案数。那么可以推出下面的方程:f(i,k)=f(i-1,k-1)+f(i+1,k-1) (i=1或n时,需单独处理)

边界条件:f(1,0)=1;

结果在f(1,m)中

参考程序:

program ball;

const

inp='ball.in';

oup='ball.out';

var

i,j,k,n,m:longint;

f:array[0..30,0..30] of longint;

procedure flink;

begin

assign(input,inp);

reset(input);

assign(output,oup);

rewrite(output);

end;

procedure fclose;

begin

close(input);

close(output);

end;

begin

flink;

readln(n,m);

fillchar(f,sizeof(f),0);

f[1,0]:=1;

for k:=1 to m do//注意此处2个循环的次序

begin

f[1,k]:=f[2,k-1]+f[n,k-1];

for i:= 2 to n-1 do

f[i,k]:=f[i-1,k-1]+f[i+1,k-1];

f[n,k]:=f[n-1,k-1]+f[1,k-1];

end;

write(f[1,m]);

fclose;

end.

4.立体图

(drawing.pas/c/cpp)

【问题描述】

小渊是个聪明的孩子,他经常会给周围的小朋友们讲些自己认为有趣的内容。最近,他准备给小朋友们讲解立体图,请你帮他画出立体图。

小渊有一块面积为m*n的矩形区域,上面有m*n个边长为1的格子,每个格子上堆了一些同样大小的积木(积木的长宽高都是1),小渊想请你打印出这些格子的立体图。我们定义每个积木为如下格式,并且不会做任何翻转旋转,只会严格以这一种形式摆放:

+---+

/ /| 高

+---+ |

| | +

| |/ 宽

+---+

每个顶点用1个加号?+?表示,长用3个”-“表示,宽用1个”/”表示,高用两个”|”表示。

字符?+?…-…?/?…|?的ASCII码分别为43,45,47,124。字符?.?(ASCII码46)需要作为背景输出,即立体图里的空白部分需要用?.?代替。立体图的画法如下面的规则:若两块积木左右相邻,图示为:

..+---+---+

./ / /|

+---+---+ |

| | | +

| | |/.

+---+---+..

若两块积木上下相邻,图示为:

..+---+

./ /|

+---+ |

| | +

| |/|

+---+ |

| | +

| |/.

+---+..

若两块积木前后相邻,图示为:

….+---+

…/ /|

..+---+ |

./ /| +

+---+ |/.

| | +..

| |/…

+---+….

立体图中,定义位于第(m,1)的格子(即第m行第1列的格子)上面自底向上的第一块积木(即最下面的一块积木)的左下角顶点为整张图最左下角的点。

【输入】

输入文件drawing.in第一行有用空格隔开的两个整数m和n,表示有m*n个格子(1<=m,n<=50)。

接下来的m行,是一个m*n的矩阵,每行有n个用空格隔开的整数,其中第i行第j 列上的整数表示第i行第j列的格子上摞有多少个积木(1<=每个格子上的积木数<=100)。【输出】

输出文件drawing.out中包含题目要求的立体图,是一个K行L列的字符矩阵,其中K 和L表示最少需要K行L列才能按规定输出立体图。

【输入输出样例】

Pku原题,编号2330

算不上难题,但是比较麻烦,细心点就ok了。

先计算好画布的大小,再写一个根据左下角坐标绘制一个单位立方体的子程序。然后遵循下面法则,不停绘制若干个立方体。(此处能体现出分割程序的伟大)因为要不停的覆盖,所以要遵循“视觉法则”:

1.先绘里层再绘外层

2.先绘底层再绘上层

3.先绘左边再绘右边

参考程序:

program drawing;

const

inp='drawing.in';

oup='drawing.out';

var

m,n,i,j,k,x,y,h,tmp,maxx,maxy:longint;

map:array[1..1000,1..1000] of char;//画布

a:array[1..50,1..50] of integer;//记录输入的矩阵

procedure flink;

begin

assign(input,inp);

reset(input);

assign(output,oup);

rewrite(output);

end;

procedure fclose;

begin

close(input);

close(output);

end;

procedure print;//输出画布

var

i,j:longint;

begin

for i:= 1 to maxx do

begin

for j:= 1 to maxy do

write(map[i,j]);

if i<>maxx then writeln;

end;

end;

procedure draw(x,y:longint);//在画布(map数组)上绘制左下角坐标为(x,y)的一个单位立方体

begin

map[x,y]:='+';map[x,y+1]:='-'; map[x,y+2]:='-';map[x,y+3]:='-';map[x,y+4]:='+';

dec(x);

map[x,y]:='|';map[x,y+1]:=' '; map[x,y+2]:=' ';map[x,y+3]:=' ';map[x,y+4]:='|';

map[x,y+5]:='/';

dec(x);

map[x,y]:='|';map[x,y+1]:=' '; map[x,y+2]:=' ';map[x,y+3]:=' ';map[x,y+4]:='|';

map[x,y+5]:=' ';map[x,y+6]:='+';

dec(x);

map[x,y]:='+';map[x,y+1]:='-'; map[x,y+2]:='-';map[x,y+3]:='-';map[x,y+4]:='+';

map[x,y+5]:=' ';map[x,y+6]:='|';

dec(x); inc(y);

map[x,y]:='/';map[x,y+1]:=' '; map[x,y+2]:=' ';map[x,y+3]:=' ';map[x,y+4]:='/';

map[x,y+5]:='|';

dec(x);inc(y);

map[x,y]:='+';map[x,y+1]:='-'; map[x,y+2]:='-';map[x,y+3]:='-';map[x,y+4]:='+'; end;

begin

flink;

for i:= 1 to 1000 do

for j:= 1 to 1000 do

map[i,j]:='.'; //初始化画布

readln(m,n);

//计算画布大小maxx * maxy

maxy:=n*4+1+m*2;

maxx:=0;

for i:= 1 to m do

begin

tmp:=0;

for j:= 1 to n do

begin

read(a[i,j]);

if a[i,j]>tmp then tmp:=a[i,j];

end;

tmp:=tmp*3+3+(m-i)*2;

if tmp >maxx then maxx:=tmp;

readln;

end;

//开始往画布上绘图

for i:= 1 to m do

for j:= 1 to n do

begin

x:=maxx-(m-i)*2;//第i层第j列最下方立方体左下角点的位置(x,y)

y:=(m-i)*2+(j-1)*4+1;

for k:= 1 to a[i,j] do

draw(x-(k-1)*3,y);//绘制每层的若干个一个单位立方体end;

print;//输出画布

fclose;

end.

NOIP2008提高组复赛试题及题解

全国信息学奥林匹克联赛(NOIP2008)复赛 提高组 一、题目概览 二、提交源程序文件名 三、编译命令(不包含任何优化开关) 四、运行内存限制 注意事项: 1. 文件名(程序名和输入输出文件名)必须使用大写。 2. C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3. 全国统一评测时采用的机器配置为:CPU 1.9GHz,内存512M,上述时限以此配置为准。各省在自测时可根据具体配置调整时限。

1. 笨小猴 (word.pas/c/cpp) 【问题描述】 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。 【输入】 输入文件word.in只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。【输出】 输出文件word.out共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”; 第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。 【输入输出样例1】 【输入输出样例1解释】 单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。 【输入输出样例2】 【输入输出样例2解释】 单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。 基本的字符串处理,细心一点应该没问题的,不过判断素数时似乎需要考虑下0和1的情况。var a:array['a'..'z']of integer; s:string; l,i,max,min,n:integer; ch:char;flag:boolean; begin assign(input,'word.in'); reset(input); assign(output,'word.out'); rewrite(output); readln(s);

noip普及组复赛模拟试题18

1. 话说去年苹果们被陶陶摘下来后都很生气,于是就用最先进的克隆技术把陶陶克隆了好多份>.<然后把他们挂在树上,准备摘取。摘取的规则是,一个苹果只能摘一个陶陶,且只能在它所能摘到的高度以下(即是小于关系)的最高的陶陶,如果摘不到的话只能灰溜溜的走开了>.<给出苹果数目及每个苹果可以够到的高度和各个陶陶的高度,求苹果们都摘完后剩下多少个陶陶…… 【输入格式】第一行为两个数,分别为苹果的数量n和陶陶的数量m(n,m<=2000)以下的n行,分别为各个苹果能够到的最大高度。再接下来的m行,分别为各个陶陶的高度。高度均不高于300。 当然了,摘取的顺序按照输入的“苹果够到的最大高度”的顺序来摘。 【输出格式】输出仅有一个数,是剩下的陶陶的数量 【样例输入】5 5↙9↙10↙2↙3↙1↙6↙7↙8↙9↙10 【样例输出】3 2. 某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。 任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:7 279 5 279 这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7的学生语文成绩更高一些。如果你的前两名的输出数据是:5 279 7 279则按输出错误处理,不能得分。【输入】输入文件scholar.in包含n+1行: 第1行为一个正整数n,表示该校参加评选的学生人数。 第2到n+1行,每行有3个用空格隔开的数字,每个数字都在0到100之间。第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为1~n(恰好是输入数据的行号减1)。 所给的数据都是正确的,不必检验。 【输出】输出文件scholar.out共有5行,每行是两个用空格隔开的正整数, 依次表示前5名学生的学号和总分。 【输入输出样例1】 scholar.in scholar.out 6 90 67 80 87 66 91 78 89 91 88 99 77 67 89 64 78 89 98 6 265 4 264 3 258 2 244 1 237 【输入输出样例2】 scholar.in scholar.out 8 80 89 89 8 265 2 264

2008noip普及组复赛--排座位--代码C++

2.排座椅 (seat.pas/c/cpp) 【问题描述】 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。同学们在教室中坐成了M行N列,坐在第i行第j列 的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道。于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么他们就不会交头接耳了。 请你帮忙给小雪编写一个程序,给出最好的通道划分方案。在该方案下,上课时交头接耳的学生对数最少。 【输入】 输入文件seat.in的第一行,有5各用空格隔开的整数,分别是M,N,K,L,D(2<=N,M<=1000,0<=K

NOIP2008初赛普及组试题

第十四届全国青少年信息学奥林匹克联赛初赛试题 (普及组Pascal语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、单项选择题(共20题,每题1.5分。每题有且仅有一个正确答案。) 1.微型计算机中,控制器的基本功能是()。 A.控制机器各个部件协调工作B.实现算术运算和逻辑运算 C.获取外部信息D.存放程序和数据 2.设A=True,B=False,C=True,D=False,以下逻辑运算表达式值为真的是()。A.(A∧B)∨(C∧D∨﹁A) B.((﹁A∧B)∨C)∧﹁D C.(B∨C∨D)∧D∧A D.A∧(D∨﹁C)∧B 3.在下列关于图灵奖的说法中,不正确的是()。 A.图灵奖是美国计算机协会于1966年设立的,专门奖励那些对计算机事业作出重要贡献的个人 B.图灵奖有“计算机界诺贝尔奖”之称 C.迄今为止,还没有华裔计算机科学家获此殊荣 D.图灵奖的名称取自计算机科学的先驱、英国科学家阿兰·图灵 4.计算机在工作过程中,若突然停电,()中的信息不会丢失。 A.ROM 和RAM B.CPU C.ROM D.RAM 5.完全二叉树共有2*N-1个结点,则它的叶节点数是()。 A.N-1 B.N C.2*N D.2N-1 6.在以下各项中,( )不是操作系统软件。 A.Solaris B.Linux C.Windows Vista D.Sybase 7.设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈S,出栈的序列为b,d,f,e,c,a,则栈S的容量至少应该是()。 A.6 B.5 C.4 D.3 8.与十进制数28.5625相等的四进制数是()。 A.123.21 B.131.22 C.130.22 D.130.21 9.设字符串S=”Olympic”,S的非字串的数目是()。 A.28 B.29 C.16 D.17 10.Web2.0 是近年来互联网的热门概念之一,其核心思想是互动与分享。下列网站中,()是典型的Web 2.0应用。 A.Sina B.Flicker C.Yahoo D.Google

NOIP2002普及组(复赛)

2002年全国青少年信息学(计算机)奥林匹克分区联赛复赛试题 (普及组竞赛用时:3 小时) 题一级数求和(存盘名:NOIPC1) [问题描述]: 已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。 现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。 [输入] 键盘输入 k [输出] 屏幕输出 n [输入输出样例] 输人:1 输出:2 题二选数(存盘名:NOIPC2) [问题描述]: 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为:3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 现在,要求你计算出和为素数共有多少种。 例如上例,只有一种的和为素数:3+7+19=29)。 [输入]: 键盘输入,格式为: n , k (1<=n<=20,k<n) x1,x2,…,xn (1<=xi<=5000000) [输出]: 屏幕输出,格式为: 一个整数(满足条件的种数)。 [输入输出样例]: 输入: 4 3 3 7 12 19 输出: 1

[问题描述]: 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15)。 规则: 一位数可变换成另一个一位数: 规则的右部不能为零。 例如:n=234。有规则(k=2): 2-> 5 3-> 6 上面的整数 234 经过变换后可能产生出的整数为(包括原数): 234 534 264 564 共 4 种不同的产生数 问题: 给出一个整数 n 和 k 个规则。 求出: 经过任意次的变换(0次或多次),能产生出多少个不同整数。 仅要求输出个数。 [输入]: 键盘输人,格式为: n k x1 y1 x2 y2 ... ... xn yn [输出]: 屏幕输出,格式为: 一个整数(满足条件的个数): [输入输出样例]: 输入: 234 2 2 5 3 6 输出: 4

NOIP1999普及组(复赛)

第五届全国青少年信息学(计算机)奥林匹克分区联赛复赛试题 (普及组 竞赛用时:3小时) 第一题 Cantor 表(30分) 现代数学的著名证明之一是Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 我们以Z 字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,… 输入:整数N (1≤N ≤10000000) 输出:表中的第N 项 样例: INPUT OUTPUT N=7 1/4 第二题 回文数(30分) 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个10进制数56,将56加56(即把56从右向左读),得到121是一个回文数。 又如:对于10进制数87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 = 4884 在这里的一步是指进行了一次N 进制的加法,上例最少用了4步得到回文数4884。 写一个程序,给定一个N (2<=N<=10,N=16)进制数M ,求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible !” 样例: INPUT OUTPUT N = 9 M= 87 STEP=6 第三题 旅行家的预算(40分) 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C (以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P 和沿途油站数N (N 可以为零),油站i 离出发点的距离Di 、每升汽油价格Pi (i=1,2,…,N )。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution ”。 样例: INPUT … 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … 3/1 3/2 3/3 … 4/1 4/2 … 5/1 … …

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指向的结点时,应执行( )。

2019年NOIP2008初赛普及组C题目及答案

第十四届全国青少年信息学奥林匹克联赛初赛试题2008 (普及组 C++语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一、单项选择题(共20题,每题分,共计30分。每题有且仅有一个正确答案.)。 1.微型计算机中,控制器的基本功能是()。 A. 控制机器各个部件协调工作 B. 实现算术运算和逻辑运算 C. 获取外部信息 D. 存放程序和数据 2. 设A=true,B=false,C=true,D=false,以下逻辑运算表达式值为真的是()。 A. (A∧B)∨(C∧D∨?A) B. ((?A∧B)∨C)∧?D C. (B∨C∨D)∧D∧A D. A∧(D∨?C)∧B 3. 在下列关于图灵奖的说法中,不正确的是()。 A. 图灵奖是美国计算机协会于1966年设立的,专门奖励那些对计算机事业作出重要贡献的个人 B. 图灵奖有“计算机界诺贝尔奖”之称 C. 迄今为止,还没有华裔计算机科学家获此殊荣 D. 图灵奖的名称取自计算机科学的先驱、英国科学家阿兰·图灵 4.计算机在工作过程中,若突然停电,()中的信息不会丢失。 A. ROM和RAM B. CPU D. RAM 5.完全二叉树共有2*N-1个结点,则它的叶节点数是()。 A. N-1 B. N C. 2*N D. 2N-1 6. 在以下各项中,()不是操作系统软件。 A. Solaris B. Linux C. Windows Vista D. Sybase 7.设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈S,出栈的序列为b,d,f,e,c,a,则栈S的容量至少应该是()。 A. 6 B. 5 C. 4 D. 3 8. 与十进制数相等的四进制数是()。 A. B. 131.22 C. D. 9. 设字符串S=”Olympic”,S的非空子串的数目是()。 A. 28 B. 29 C. 16 D. 17 10.是近年来互联网的热门概念之一,其核心思想是互动与分享。下列网站中, ()是典型的应用。 A. Sina B. Flickr C. Yahoo D. Google

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。

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

第十四届全国青少年信息学奥林匹克联赛初赛试题2008 (普及组C++语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●● 一、单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确答案.)。 1.微型计算机中,控制器的基本功能是()。 A.控制机器各个部件协调工作 B.实现算术运算和逻辑运算 C.获取外部信息 D.存放程序和数据 2.设A=true,B=false,C=true,D=false,以下逻辑运算表达式值为真的是()。 A.(A∧B)∨(C∧D∨?A) B.((?A∧B)∨C)∧?D C.(B∨C∨D)∧D∧A D.A∧(D∨?C)∧B 3.在下列关于图灵奖的说法中,不正确的是()。 A.图灵奖是美国计算机协会于1966年设立的,专门奖励那些对计算机事业作出重要贡献的个人 B.图灵奖有“计算机界诺贝尔奖”之称 C.迄今为止,还没有华裔计算机科学家获此殊荣 D.图灵奖的名称取自计算机科学的先驱、英国科学家阿兰·图灵 4.计算机在工作过程中,若突然停电,()中的信息不会丢失。 A.ROM和RAM B.CPU C.ROM D.RAM 5.完全二叉树共有2*N-1个结点,则它的叶节点数是()。 A.N-1 B.N C.2*N D.2N-1 6.在以下各项中,()不是操作系统软件。 A.Solaris B.Linux C.WindowsVista D.Sybase 7.设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈S,出栈的序列为b,d,f,e,c,a,则 栈S的容量至少应该是()。 A.6 B.5 C.4 D.3 8.与十进制数28.5625相等的四进制数是()。 A.123.21 B.131.22 C.130.22 D.130.21 9.设字符串S=”Olympic”,S的非空子串的数目是()。 A.28 B.29 C.16 D.17 10.Web2.0是近年来互联网的热门概念之一,其核心思想是互动与分享。下列网站中,()是典型的Web2.0应用。 A.Sina B.Flickr C.Yahoo D.Google 11.递归过程或函数调用时,处理参数和返回地址,通常使用一种称为()的数据结构。 A.队列 B.多维数组 C.线性表 D.栈 12.(2008)10+(5B)16的结果是()。 A.(833)16 B.(2089)10 C.(4163)8 D.(100001100011)2 13.二叉树T,已知其先根遍历是1243576(数字为结点的编号,以下同),中根遍历是2415736,则该二叉树的后根遍历是()。 A.4257631 B.4275631 C.7425631 D.4276531

历年noip初赛普及组试题(完整资料).doc

【最新整理,下载后即可编辑】 历年noip普及组初赛试题汇编 芜湖县实验学校NOIP初赛复习资料

第十五届全国青少年信息学奥林匹克联赛初赛试题(2009) (普及组C++语言二小时完成) ●●全部试题答案均要求写在答卷纸上,写在试卷纸 上一律无效●● 一.单项选择题(共20题,每题1.5分,共计30分。每题有且仅有一个正确答案。) 1、关于图灵机下面的说法哪个是正确的: A)图灵机是世界上最早的电子计算机。 B)由于大量使用磁带操作,图灵机运行速度很慢。 C)图灵机是英国人图灵发明的,在二战中为破译德军的密码 发挥了重要作用。 D)图灵机只是一个理论上的计算模型。 2、关于计算机内存下面的说法哪个是正确的: A)随机存储器(RAM)的意思是当程序运行时,每次具体分 配给程序的内存位置是随机而不确定的。 B)1MB内存通常是指1024*1024字节大小的内存。 C)计算机内存严格说来包括主存(memory)、高速缓存(cache) 和寄存器(register)三个部分。 D)一般内存中的数据即使在断电的情况下也能保留2个小时 以上。 3、关于BIOS下面说法哪个是正确的: A)BIOS是计算机基本输入输出系统软件的简称。 B)BIOS里包含了键盘、鼠标、声卡、显卡、打印机等常用输 入输出设备的驱动程序。 C)BIOS一般由操作系统厂商来开发完成。

D)BIOS能提供各种文件拷贝、复制、删除以及目录维护等文 件管理功能。 4、关于CPU下面哪个说法是正确的: A)CPU全称为中央处理器(或中央处理单元)。 B)CPU可以直接运行汇编语言。 C)同样主频下,32位的CPU比16位的CPU运行速度快一倍。 D)CPU最早是由Intel公司发明的。 5、关于ASCII,下面哪个说法是正确的: A)ASCII码就是键盘上所有键的唯一编码。 B)一个ASCII码使用一个字节的内存空间就能够存放。 C)最新扩展的ASCII编码方案包含了汉字和其他欧洲语言的 编码。 D)ASCII码是英国人主持制定并推广使用的。 6、下列软件中不是计算机操作系统的是: A) Windows B) Linux C) OS/2 D) WPS 7、关于互联网,下面的说法哪一个是正确的: A)新一代互联网使用的IPv6标准是IPv5标准的升级与补充。 B)互联网的入网主机如果有了域名就不再需要IP地址。 C)互联网的基础协议为TCP/IP协议。 D)互联网上所有可下载的软件及数据资源都是可以合法免 费使用的。 8、关于HTML下面哪种说法是正确的: A)HTML实现了文本、图形、声音乃至视频信息的统一编码。 B)HTML全称为超文本标记语言。 C)网上广泛使用的Flash动画都是由HTML编写的。 D)HTML也是一种高级程序设计语言。

noip普及组复赛入门训练12(答案)

PASCAL复习12 1.自然数(文件名ZRS.PAS) 【问题描述】任意给定一个自然数M(M<999999999),如果它的所有各位数字都是由0或1组成,则输出YES,否则输出NO.例: 输入:100 输出:YES 输入:31 输出: NO Var m,x,a:longint; f:boolean; Begin readln(m); x:=m; f:=true; while (x>0)and f do begin a:=x mod 10; if (a<>0)and(a<>1) then f:=false; x:=x div 10; end; if f then writeln(‘YES’) else writeln(‘NO’); readln; End. 2.字符串(文件名ZFC.PAS) 【问题描述】由键盘输入一个超过10个字符的字符串,已知其中有两个“A”,以回车键结束。请你编个程序实现一下两个功能, 1、打印出第一个“A”所在的位置 2、打印出两个“A”之间的字符以及字符个数。 输入:TEACHERSTUDENTAND 输出:3 CHERSTUDENT 11 V AR T,T1:INTEGER; C:CHAR; BEGIN T:=0;t1:=0; Read(c); Repeat t:=t+1;

if c=‘A’then begin writeln(t); read(c); repeat write(c); t1:=t1+1; read(c); until c=‘A’; end; read(c); Until c=chr(13); Writeln; Writeln(t1); END. 3.数位和与积(文件名HWHJ.pas) 【问题描述】试编写程序求出n个自然数的各个数位之和与之积。输入:一个自然数n(n<=5)及n个自然数 输出:各行依次输出每一个自然数n的各个数位之和与之积。例如: 输入: 3 92 23 1024 输出 11 18 5 6 7 0 var i,t,x,y,z:integer; begin readln(t); for i:=1 to t do begin read(x); y:=0; z:=1; while x>0 do begin y:=y+x mod 10; z:=z*(x mod 10); x:=x div 10; end; writeln(y,' ',z); end; readln; readln end. 4. 黑色星期五(文件名HSXQW.PAS)

NOIP2002普及组初赛试题及答案

第八届全国青少年信息学奥林匹克联赛(NOIP2002)试题 (普及组PASCAL语言二小时完成) 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 一.选择一个正确答案代码(A/B/C/D,填入每题的括号内(每题1.5分,多选无分,共30分) 1)微型计算机的问世是由于( ) 的出现。 A) 中小规模集成电路 B) 晶体管电路 C) (超)大规模集成电路 D) 电子管电路 2)下列说法中正确的是( ) 。 A) 计算机体积越大,其功能就越强 B) CPU的主频越高,其运行速度越快 C) 两个显示器屏幕大小相同,则它们的分辨率必定相同 D)点阵打印机的针数越多,则能打印的汉字字体越多 3)Windows98中,通过查找命令查找文件时,若输入F*.? , 则下列文件( ) 可以被查到。 A) F.BAS B) FABC.BAS C) F.C D) EF. 4)CPU处理数据的基本单位是字,一个字的字长( ) 。 A) 为8个二进制位 B) 为16个二进制位 C) 为32个二进制位 D) 与芯片的型号有关 5)资源管理器的目录前图标中增加"+"号,这个符号的意思是( ) 。 A) 该目录下的子目录已经展开 B) 该目录下还有子目录未展开 C) 该目录下没有子目录 D) 该目录为空目录, 6)下列哪一种程序设计语言是解释执行的( ) 。 A) Pascal B) GWBASIC C) C++ D) FORTRAN 7)启动WORD的不正确方法是( ) 。 A) 单击Office工具栏上的Word图标 B) 单击"开始"→"程序"→Word C) 单击"开始"→"运行",并输入Word按回车 D) 双击桌面上的"Word快捷图标" 8)多媒体计算机是指( ) 计算机。 A) 专供家庭使用的 B) 装有CDROM的 C) 连接在网络上的高级 D) 具有处理文字、图形、声音、影像等信息的 9)在树型目录结构中,不允许两个文件名相同主要是指( ) 。 A) 同一个磁盘的不同目录下 B) 不同磁盘的同一个目录下 C) 不同磁盘的不同目录下、 D) 同一个磁盘的同一个目录下 10)用画笔(Paintbrush)绘制图形并存储在文件中,该图形文件的文件名缺省的后缀为( ) 。 A) .jpg B) .bmp C) .gif D).tiff t11)E-ml地址中用户名和邮件所在服务器名之间的分隔符号是( ) 。 E A) # B) @ C) & D) $ 12)(0.5)10=( ) 16. A) 0.1 B) 0.75 C) 0.8 D) 0.25

NOIP普及组复赛试题源程序

N O I P2011普及组复赛 1.数字反转(c/pas) 【问题描述】 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。(参见样例2) 【输入】 输入文件名为。 输入共一行,一个整数N。 【输出】 输出文件名为。 输出共1行,一个整数,表示反转后的新数。 -1,000,000,000≤N≤1,000,000,000。 【解题】这道题非常简单,可以读字符串处理,也可以读数字来处理,只不过要注意符号问题(以及-0,但测试数据没出)。 【法一】字符串处理 Var i,l,k:integer; s:string; p:boolean; begin assign(input, ''); reset(input); assign(output, ''); rewrite(output); readln(s); l:=length(s); k:=1; if s[1]='-' then begin write('-'); k:=2; end; p:=true;; for i:=l downto k do begin if(p)and((s[i]='0')) then continue else begin write(s[i]); p:=false;; end; end; close(input); close(output); end. 【法二】数字处理 Var f:integer; n,ans:longint; begin assign(input, ''); reset(input);

NOIP2008普及组复赛试题与解题报告

NOIP 2008普及组解题报告 一、ISBN号码(isbn.pas/c/cpp) 【问题描述】 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。 识别码的计算方法如下: 首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。 你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。 【输入】 输入文件isbn.in只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。 【输出】 输出文件isbn.out共一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。 【输入输出样例1】 isbn.in 0-670-82162-4 isbn.out Right 【输入输出样例2】 isbn.in

NOIP复赛普及组测试试题

NOIP复赛普及组试题

————————————————————————————————作者:————————————————————————————————日期:

CCF全国信息学奥林匹克联赛(NOIP2013)复赛 普及组 (请选手务必仔细阅读本页内容) 一.题目概况 中文题目名称计数问题表达 式求 值 小朋友的 数字 车站分 级 英文 题目 与子 目录 名 count expr number level 可执行 文件名 count expr number level 输入文 件名 count.in expr.in number.in level.in 输出文count.out expr.out n umber.out level.out

件名 每个 测试 点时 限 1 秒 1 秒 1 秒 1 秒 测试点 数目 10 10 10 10 每个 测试 点分 值 10 10 10 10 附加样 例文件 有有有有 结果比较方式全文比较(过滤行末空格及文末回车) 题目类 型 传统传统传统传统

运行内 存上限 128M 128M 128M 128M 二.提交源程序文件名 对于 C++语 言 count.cpp expr.cpp number.cpp level.cpp 对于 C 语 言 count.c expr.c number.c level.c 对于 pascal 语言 count.pas expr.pas number.pas level.pas 三.编译命令(不包含任何优化开关) 对于C++语言 g++ -o count count.cpp -lm g++ -o expr expr.cpp –lm g++ -o number number.cpp -lm g++ -o level level.cpp -lm 对于C 语言gcc -o count gcc -o expr gcc-o number gcc -o level

NOIP普及组复赛试题

CCF全国信息学奥林匹克联赛(NOIP2017)复赛 普及组 (请选手务必仔细阅读本页内容) 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,2.8GHz, 内存4G,上述时限以此配置为准。 4、只提供Linux格式附加样例文件。 5、提交的程序代码文件的放置位置请参照各省的具体要求。 6、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。

1. 成绩 (score.cpp/c/pas) 【问题描述】 牛牛最近学习了C++入门课程,这门课程的总成绩计算方法是: 总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50% 牛牛想知道,这门课程自己最终能得到多少分。 【输入格式】 输入文件名为score.in。 输入文件只有1行,包含三个非负整数A、B、C,分别表示牛牛的作业成绩、小测成绩和期末考试成绩。相邻两个数之间用一个空格隔开,三项成绩满分都是100分。 【输出格式】 输出文件名为score.out。 输出文件只有1行,包含一个整数,即牛牛这门课程的总成绩,满分也是100分。 见选手目录下的score/score1.in和score/score1.ans。 【输入输出样例1说明】 牛牛的作业成绩是100分,小测成绩是100分,期末考试成绩是80分,总成绩是100×20%+100×30%+80×50%=20+30+40=90。 【输入输出样例2说明】 牛牛的作业成绩是60分,小测成绩是90分,期末考试成绩是80分,总成绩是60×20%+90×30%+80×50%=12+27+40=79。 【数据说明】 对于30%的数据,A=B=0。 对于另外30%的数据,A=B=100。 对于100%的数据,0≤A、B、C≤100且A、B、C都是10的整数倍。

NOIP复赛普及组试题精编版

CCF全国信息学奥林匹克联赛(NOIP2013)复赛 普及组 (请选手务必仔细阅读本页内容) 一.题目概况 二.提交源程序文件名

三.编译命令(不包含任何优化开关) 注意事项: 1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。 3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) 64x2 Dual Core CPU 5200+, 2.71GHz,内存2G,上述时限以此配置为准。 4、只提供Linux 格式附加样例文件。 5、特别提醒:评测在NOI Linux 下进行。 1.记数问题 (count.cpp/c/pas) 【问题描述】 试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?例如,在1 到11 中,即在1、2、3、4、5、6、7、8、9、10、11 中,数字1 出现了4 次。 【输入】 输入文件名为count.in。 输入共1 行,包含2 个整数n、x,之间用一个空格隔开。 【输出】 输出文件名为count.out。 输出共1 行,包含一个整数,表示x 出现的次数。 【输入输出样例】

【数据说明】 对于100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。 2.表达式求值 (expr.cpp/c/pas) 【问题描述】 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 【输入】 输入文件为expr.in。 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0 到231-1 之间的整数。输入数据保证这一行只有0~ 9、+、*这12 种字符。 【输出】 输出文件名为expr.out。 输出只有一行,包含一个整数,表示这个表达式的值。注意:当答案长度多于4 位时,请只输出最后4 位,前导0 不输出。 【输入输出样例1】 【输入输出样例2】

NOIP2003提高组初赛试题

第九届分区联赛提高组初赛试题 (提高组PASCAL 语言二小时完成) ●●全部答案均要写在答案卷子上,写在试卷纸上一律无效●● 一.单项选择题(共10题,每题1.5分,共计15分。每题有且仅有一个正确答案.)。 1. 图灵 (Alan Turing) 是()。 A)美国人 B)英国人 C)德国人 D)匈牙利人 E)法国人 2. 第一个给计算机写程序的人是()。 A) Alan Mathison Turing B) Ada Lovelace C) John von Neumann D) John Mc-Carthy E) Edsger Wybe Dijkstra 3. 十进制数2003等值于二进制数()。 A) 010******* B) 10000011 C) 110000111 D) 11111010011 E) 1111010011 4. 假设A=true,B=false,C=ture,D=ture,逻辑运算表达式A∧B∨C∧D的值是()。 A) ture B) false C) 0 D) 1 E) NULL 5. 一个高度为h 的二叉树最小元素数目是()。 A) 2h+1 B) h C) 2h-1 D) 2h E) 2h-1 6. 已知队列(13,2,11,34,41,77,5,7,18,26,15),第一个进入队列的元素是13,则第五个出队列的元素是()。 A) 5 B) 41 C) 77 D) 13 E) 18 7. 下面一段程序是用()语言书写的。 int func1(int n){ int i,sum=0; for(i=1;i<=n;i++) sum+=i*i; return sum; } A) FORTRAN B) PASCAL C) C D) PROLOG E) BASIC 8. 设全集E={1,2,3,4,5},集合A={1,4},B={1,2,5},C={2,4},则集合(A ∩B)∪~C 为()。 A)空集 B) {1} C) {3,5} D){1,5} E) {1,3,5} 9. 表达式(1+34)*5-56/7 的后缀表达式为()。 A) 1+34*5-56/7 B) -*+1 34 5/56 7 C) 1 34 +5*56 7/- D) 1 34 5* +56 7/- E) 1 34+5 56 7-*/ 10. 下列计算机设备,即是输入设备,又是输出设备的是()。 A)键盘 B)触摸屏 C)扫描仪 D)投影仪 E)数字化仪

相关文档
相关文档 最新文档