NOIP复赛普及组测试试题

合集下载

CCF全国信息学奥林匹克联赛NOIP普及组复赛试题

CCF全国信息学奥林匹克联赛NOIP普及组复赛试题

CCF全国信息学奥林匹克联赛NOIP普及组复赛试题CCF全国信息学奥林匹克联赛(NOIP2018)复赛普及组(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

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

3、全国统一评测时采用的机器配置为:Intel(R) Core(TM) i7-****************,内存32GB。

上述时限以此配置为准。

4、只提供Linux格式附加样例文件。

5、特别提醒:评测在当前最新公布的NOI Linux下进行,各语言的编译器版本以其为准。

1. 标题统计(title.cpp/c/pas)【问题描述】凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符?注意:标题中可能包含大、小写英文字母、数字字符、空格和换行符。

统计标题字符数时,空格和换行符不计算在内。

【输入格式】输入文件名为title.in。

输入文件只有一行,一个字符串s。

【输出格式】输出文件名为title.out。

输出文件只有一行,包含一个整数,即作文标题的字符数(不含空格和换行符)。

见选手目录下的title/title1.in和title/title1.ans。

【输入输出样例1说明】标题中共有3个字符,这3个字符都是数字字符。

见选手目录下的title/title2.in和title/title2.ans。

【输入输出样例2说明】标题中共有5个字符,包括1个大写英文字母,1个小写英文字母和2个数字字符,还有1个空格。

由于空格不计入结果中,故标题的有效字符数为4个。

【数据规模与约定】规定|s|表示字符串s的长度(即字符串中的字符和空格数)。

对于40%的数据,1≤|s|≤5,保证输入为数字字符及行末换行符。

对于80%的数据,1≤|s|≤5,输入只可能包含大、小写英文字母、数字字符及行末换行符。

对于100%的数据,1≤|s|≤5,输入可能包含大、小写英文字母、数字字符、空格和行末换行符。

NOIP普和组复赛试题c版本

NOIP普和组复赛试题c版本

{
if(d[i+l1][j+l2]!=-1)
d[i+l1][j+l2]++;
}//边上八个位置旳格子不是雷则
数值加1
}
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
if(
d[i][j]==-1) cout<<'*';
else cout<<d[i][j];
cout<<endl;
-5-
参照程序
➢ #include <iostream>
➢ using namespace std;
➢ int main()
➢{

long d[102][102];

long n,m;

cin>>n>>m;

long i,j;

char ch;

for(i=0;i<=n;i++)

{

for(j=0;j<=m;j++)

for(int i=1;i<=n;i++)

{
- 16 -
BYE
温馨提醒: 先了解题目在看题解。
试题分析
The END
2017. 07. 28
➢ 请计算前K天里,骑士一共取得了多少金币。 ➢ 对于全部数据,1≤K≤10000。
➢ 【分析】K旳规模比较少,直接用模拟,一天一天发金币。 ➢ N天发N枚金币,N递增1,剩余天数K-N ➢ 估计时间15-25分钟

noip普及组复赛模拟试题10答案

noip普及组复赛模拟试题10答案

【试题描述】选拔考试即将开始,同学们陆续进入考场,哇,考场好大啊。

究竟star应该坐在哪张位置呢?考场门口贴了一张考场座位(m*n)明细表,其中考场里的有些位置是坏的不能坐,考号为1的同学的座位号是第一排第一列,即他的座位是1、1,2号同学的座位是1、2,以此类推,当然,如果某个座位是坏的,那么这个同学就往后延一个座位,后面的同学再依次排下去。

考场座位肯定够所有考生坐。

【输入描述】第1行:3个整数,m,n,k(m,n表示考场的座位是m行n列,k表示star的考号)m,n<=100;第2..m+1行:每行n个数代表考场明细0代表座位是好的,1代表座位是坏的)【输出描述】一行:两个整数代表star应该坐的位置【输入样例】4 4 50 0 0 00 0 1 00 0 0 10 0 0 0【输出样例】2 1【试题来源】常州长训班测试program ex1661;var k,i,j,s,m,n:integer;a:array[1..100,1..100] of 0..1;beginreadln(m,n,k);for i:=1 to m dofor j:=1 to n doread(a[i,j]);s:=0;for i:=1 to m dofor j:=1 to n dobeginif a[i,j]<>1 then inc(s);if s=k then begin writeln(i,' ',j); exit;end;end;end.输入 6 6 70 0 0 0 1 00 0 1 0 0 00 0 0 1 1 00 0 0 0 0 11 0 0 0 0 00 0 1 0 0 1 输出 2 2输入8 6 100 0 0 0 1 00 0 1 0 0 00 0 0 1 1 00 0 0 0 0 11 0 0 0 0 00 0 1 0 0 10 1 0 0 0 01 0 0 0 0 1输出 2 6【题目描述】一个农夫有n(n≤1000)头奶牛,可由于产奶太少,他决定把当天产奶最少的牛杀掉,但他有点舍不得,如果当天不只一头奶牛产奶,至少他便放过它们。

noip普及组复赛模拟试题8(答案)

noip普及组复赛模拟试题8(答案)

Description 给定整数n(32位以内),判断它是否为2的方幂。

是就输出'yes',否则输出'no'。

Input 一个整数n。

Output 一个字符串Sample Input 4Sample Output yesHintn > 0 && ( ( n & ( n - 1 ) ) == 0貌似是数学问题,套用了提示program ex1560;var n:longint;beginreadln(n);if (n>0) and (n and (n-1)=0) then write('yes') else write('no'); end.输入 127 输出 NO 输入 262144 输出 YES 输入 68719476736 输出 YES问题描述:计算机软件版本通常被用来区分某种软件在不同时间的发布。

大部分软件版本号都是用“.”分隔的非负数的序列。

对两个不同的版本A = a1.a2.a3…an和B = b1.b2.b3…bm,如果下面两个条件之一成立,我们认为版本A要比版本B新:1.对某个i,我们有:对所有j < i, ai > bi 和aj = bj;2.n比m大,而且对所有i < m, ai = bi。

(ai和bi都不超过LONGINT)在这个问题里,你要对给定的一组版本号,按照上面的定义从旧到新排序。

输入文件(VERSIONS.IN):输入文件第一行是一个整数N(N<=20),表示要排序的版本数。

接下来的N行每行一个版本号。

每个版本号是长度不超过50的字符串。

输出文件(VERSIONS.OUT):将排好序的结果以每行一个版本号输出。

输入输出样例:VERSIONS.IN43.0.512.42.4.6VERSIONS.OUT12.42.4.63.0.5var n,i:integer;scan:array [1..30] of string;function check(aa,bb:string):boolean;vara,b:longint;i,j:integer;code:integer;beginaa:=aa+'.'; bb:=bb+'.';i:=pos('.',aa); j:=pos('.',bb);while (i>0) and (j>0) do beginval(copy(aa,1,i-1),a,code);val(copy(bb,1,j-1),b,code);if a<b then exit(true);if a>b then exit(false);delete(aa,1,i);delete(bb,1,j);i:=pos('.',aa);j:=pos('.',bb);end;if (i=0) and (j>0) then exit(true) else exit(false); end;procedure qsort(l,r:integer);vari,j:integer;t:string;beginif l>=r then exit;i:=random(r-l)+l;t:=scan[i];scan[i]:=scan[l];i:=l;j:=r;repeatwhile (i<j) and (check(t,scan[j])) do dec(j);if i=j then break; scan[i]:=scan[j];while (i<j) and (check(scan[i],t)) do inc(i);if i=j then break; scan[j]:=scan[i];until i=j;scan[i]:=t;qsort(l,i-1);qsort(i+1,r);end;beginreadln(n);for i:=1 to n do readln(scan[i]); qsort(1,n);for i:=1 to n do writeln(scan[i]); end.输入73.0.5.11.02.22.2.62.2.83.0.5.43.0 输出1.02.22.2.62.2.83.03.0.5.13.0.5.4输入1211.0.21.0.36.23.43.4.222.12.1.43.4.14.24.2.2输出 11.0.21.0.322.12.1.43.43.4.13.4.24.24.2.26.2输入正整数N、M,求N÷M的值。

noip普及组复赛模拟试题22(答案)

noip普及组复赛模拟试题22(答案)

军方截获的信息由n(n<=30000)个数字组成,因为是敌国的高端秘密,所以一时不能破获。

最原始的想法就是对这n个数进行小到大排序,每个数都对应一个序号,然后对第i个是什么数感兴趣,现在要求编程完成。

【输入格式】第一行n,接着是n个截获的数字,接着一行是数字k,接着是k行要输出数的序号。

【输出格式】k行序号对应的数字。

【输入样例】Secret.in5121 1 126 123 73243【输出样例】Secret.out7123121program secret;const max=30000;var n,i,x,k:longint;a:array[1..max] of longint;procedure sort(l,r:longint);var i,j,t,mid:longint;begini:=l;j:=r;mid:=a[(l+r)div 2];repeatwhile a[i]<mid do inc(i);while a[j]>mid do dec(j);if j>=i thenbegint:=a[i];a[i]:=a[j];a[j]:=t;inc(i);dec(j)end;until i>j;if l<j then sort(l,j);if i<r then sort(i,r);end;assign(input,'secret.in');assign(output,'secret.out');reset(input);rewrite(output);readln(n);for i:=1 to n do read(a[i]);sort(1,n);readln(k);for i:=1 to k dobeginreadln(x);writeln(a[x]);end;close(input);close(output);end.输入1512 10 36 127 126 123 75 89 101 999 777 654 456 890 134624391014 输出127536127134890输入248 18 12 24 434 10 36 127 126 123 75 89 101 999 777 654 456 890 134 555 221 108 888 65685431920141710 输出2412654656134456108有一只坏的里程表:它总是跳过数字3和数字8。

noip普及组复赛试题及答案

noip普及组复赛试题及答案

noip普及组复赛试题及答案一、选择题1. 在计算机科学中,以下哪个概念与数据结构最相关?A. 算法B. 操作系统C. 网络协议D. 编译原理答案:A2. 以下哪种排序算法的时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序答案:D3. 在C++中,以下哪个关键字用于定义类?A. structB. unionC. enumD. typedef答案:A4. 以下哪个选项不是数据库管理系统(DBMS)的特性?A. 数据持久性B. 数据共享C. 数据加密D. 数据独立性答案:C5. 在计算机网络中,TCP和UDP协议分别属于哪一层?A. 传输层B. 应用层C. 网络层D. 物理层答案:A二、填空题1. 在计算机程序中,______ 用于定义数据的存储方式和组织形式。

答案:数据结构2. 一个算法的时间复杂度为O(1),表示该算法的执行时间与输入数据的规模______。

答案:无关3. 在C++中,______ 是一种特殊的类,它提供了一种方式来定义数据类型。

答案:typedef4. 数据库管理系统(DBMS)通常包含数据定义语言(DDL)、数据操纵语言(DML)和______。

答案:数据控制语言(DCL)5. 在计算机网络中,______ 协议负责在网络层进行数据包的路由选择。

答案:IP三、简答题1. 请简述面向对象编程(OOP)的三个基本特征。

答案:封装、继承、多态2. 描述二分查找算法的基本步骤。

答案:二分查找算法的基本步骤包括:首先确定数组是有序的,然后取中间元素与目标值比较,如果中间元素等于目标值,则查找成功;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找,直到找到目标值或查找范围为空。

四、编程题1. 编写一个函数,实现对整数数组的排序。

答案:以下是一个简单的冒泡排序算法实现:```cppvoid bubbleSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {for (int j = 0; j < n-i-1; j++) {if (arr[j] > arr[j+1]) {swap(arr[j], arr[j+1]);}}}}```2. 编写一个函数,实现计算一个整数的阶乘。

NOIP第十三届天下青少年信息学奥林匹克联赛复赛试题普及组

全国信息学奥林匹克联赛(NOIP2007 )复赛普及组全国信息学奥林匹克联赛(NOIP 2007)复赛普及组题目一览题目名称奖学金纪念品分组守望者的逃离Hanoi 双塔问题代号scholar group escape hanoi 输入文件输出文件时限 1 秒 1 秒 1 秒 1 秒(2007 年 11 月 17 日 3 小时达成 )说明:1.文件名(程序名和输入输出文件名)一定使用小写2. C/C++ 中函数 main() 的返回值种类一定是int ,程序正常结束时的返回值一定是0。

3. 全国一致评测时采纳的机器参照配置为:CPU 2.0GHz ,内存 256M 。

1.奖学金(scholar.pas/c/cpp)【问题描绘】某小学近来获取了一笔资助,打算取出此中一部分为学习成绩优异的前 5 名学生发奖学金。

期末,每个学生都有 3 门课的成绩:语文、数学、英语。

先按总分从高到低排序,假如两个同学总分同样,再按语文成绩从高到低排序,假如两个同学总分和语文成绩都同样,那么规定学号小的同学排在前方,这样,每个学生的排序是独一确立的。

任务:先依据输入的 3 门课的成绩计算总分,而后按上述规则排序,最后按排名次序输出前5 名学生的学号和总分。

注意,在前 5 名同学中,每一个人的奖学金都不同样,所以,你一定严格按上述规则排序。

比如,在某个正确答案中,假如前两行的输出数据(每行输出两个数:学号、总分)是:7 2795 279这两行数据的含义是:总分最高的两个同学的学号挨次是7 号、 5 号。

这两名同学的总分都是 279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7 的学生语文成绩更高一些。

假如你的前两名的输出数据是:5 2797 279则按输犯错误办理,不可以得分。

【输入】输入文件包含n+1行:第 1 行为一个正整数n,表示该校参加评比的学生人数。

第 2 到 n+1 行,每行有 3 个用空格分开的数字,每个数字都在0 到 100 之间。

NOIP复赛普及组模拟题4

全国信息学奥林匹克联赛复赛
普及组
模拟赛
题目概况
题目名称 输入文件名 输出文件名 提交程序名 每个测试点时限
空间限制
晴天小猪历险记 hill.in hill.out hill.* 1秒 128M
卡布列克圆舞曲 kblk.in kblk.out kblk.* 1秒 128M
山峰暸望 mount.in mount.out mount.*
山的宽度定义为在这个山上进行的测量的次数(也就是序列的长度)。请帮 Bessie 找到最宽的山。
这是一个比较典型的地平线的例子:
*******
*
*********
***
**********
*****
***********Leabharlann **********
*
*****************
***********
*** *
** ******************* ************* * * *******
*
*********************************************************************
321111233367777777654333211111234445676543211121211111234323211111121
输入格式 第一行有一个数 n(2<=n<=1000),表示山的高度。 从第二行至第 n+1 行,第 i+1 行有 i 个数,每个数表示晴天小猪在这一段山
路上需要爬的时间。 输出格式
一个数,即晴天小猪所需要的最短时间。 样例输入 5 1 23 456 10 1 7 8 11456 样例输出 10

noip普及组复赛入门测试(答案+测试数据)

一、新龟兔赛跑(文件名xgtsp.pas)新龟兔赛跑比赛即将举行,此次龟兔赛跑比赛的规则与以往有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是考察谁在规定时间内跑的路程更长,且兔子和乌龟跑步都是匀速的。

由于兔子的坏习惯,它总喜欢把比赛的总时间T小时中的K小时拿来睡觉。

现在给你比赛的总时间T、兔子的睡觉时间K、兔子的速度U、乌龟的速度V,需要你求出该次比赛谁最后获胜。

输入第一行为一个整数X,表示有X组输入数据。

每组数据只有一行,包括4个数T、K、U、V (1 ≤ T≤ 300,0 ≤ K ≤ T,1 ≤ U ≤ 100,1 ≤ V ≤ 100)。

对于每组数据,输出只有一个数,如果兔子获胜则输出-1,如果乌龟获胜则输出1,如果同时到达则输出0。

允许输入一组数后立即输出对应的结果。

样例输入:21 12 16 2 6 3样例输出:1-1varv,u,t,k,n,i:integer;beginreadln(n);for i:=1 to n do beginreadln(t,k,u,v);if v*t>U*(t-k) then writeln(1);if v*t<U*(t-k) then writeln(-1);if v*t=U*(t-k) then writeln(0);end;end.1、输入:26 2 6 28 6 8 2输出:-12、输入:2300 280 60 20120 0 12 13输出:113、输入:3100 20 50 30100 50 45 25100 80 27 17输出:-1114、输入:3150 77 29 23127 11 22 13139 22 13 7输出:1-1-1二、小球路程(文件名:XQLC.PAS )已知小球从100米高度自由下落,落地后反弹起,又落地,又弹起,……。

每次弹起的高度都是上一次高度的一半。

求小球第N次反弹起的高度和球在整个过程所经过的路程(包括下落和反弹),用键盘输入N,输出反弹高度和经过路程,结果保留两位小数。

NOIP普及组复赛试题

P1909 买铅笔题目描述P教师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。

她发觉商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价钱也有可能不同。

为了公平起见,P教师决定只买同一种包装的铅笔。

商店不许诺将铅笔的包装拆开,因此P教师可能需要购买超过n支铅笔才够给小朋友们发礼物。

此刻P教师想明白,在商店每种包装的数量都足够的情形下,要买够至少n支铅笔*最少*需要花费多少钱。

输入输出格式输入格式:输入的第一行包括一个正整数n,表示需要的铅笔数量。

接下来三行,每行用两个正整数描述一种包装的铅笔:其中第一个整数表示这种包装内铅笔的数量,第二个整数表示这种包装的价钱。

保证所有的7个数都是不超过10000的正整数。

输出格式:输出一行一个整数,表示P教师最少需要花费的钱。

输入输出样例输入样例#1:输出样例#1:输入样例#2:说明铅笔的三种包装别离是:•2支装,价钱为2;•50支装,价钱为30;•30支装,价钱为27。

P教师需要购买至少57支铅笔。

若是她选择购买第一种包装,那么她需要购买29份,共计2x29 = 58支,需要花费的钱为2x29 = 58。

事实上,P教师会选择购买第三种包装,如此需要买2份。

尽管最后买到的铅笔数量更多了,为30x2 = 60支,但花费却减少为27 x2 = 54,比第一种少。

关于第二种包装,尽管每支铅笔的价钱是最低的,但要够发必需买2份,实际的花费达到了30 x 2 = 60,因此P教师也可不能选择。

因此最后输出的答案是54。

【子任务】子任务会给出部份测试数据的特点。

若是你在解决题目中碰到了困难,能够尝试只解决一部份测试数据。

每一个测试点的数据规模及特点如下表:上表中“整倍数”的意义为:假设为“K”,表示对应数据所需要的铅笔数量n—定是每种包装铅笔数量的整倍数(这意味着必然能够不用多买铅笔)。

P2020 回文日期题目描述在日常生活中,通过年、月、日这三个要素能够表示出一个唯一确信的日期。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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++ -ocountcount.cpp-lmg++ -oexprexpr.cpp–lmg++ -onumbernumber.cpp-lmg++ -olevellevel.cpp-lm对于C 语言gcc -ocountgcc -oexprgcc-onumbergcc -olevelcount.c -lm expr.c-lmnumber.c-lmlevel.c-lm对于pascal 语言fpccount.pasfpcexpr.pasfpcnumber.pasfpclevel.pas注意事项: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 出现的次数。

【输入输出样例】count.in count.out11 1 4【数据说明】对于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】expr.in expr.out1+1*3+4 8【输入输出样例2】expr.in expr.out1+1234567890*1 7891【输入输出样例3】expr.in expr.out1+1000000003*1 4【输入输出样例说明】样例1 计算的结果为8,直接输出8。

样例2 计算的结果为1234567891,输出后4 位,即7891。

样例3 计算的结果为1000000004,输出后4 位,即4。

【数据范围】对于30%的数据,0≤表达式中加法运算符和乘法运算符的总数≤100;对于80%的数据,0≤表达式中加法运算符和乘法运算符的总数≤1000;对于100%的数据,0≤表达式中加法运算符和乘法运算符的总数≤100000。

3.小朋友的数字(number.cpp/c/pas)【问题描述】有n 个小朋友排成一列。

每个小朋友手上都有一个数字,这个数字可正可负。

规定每个小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋友手上的数字之和的最大值。

作为这些小朋友的老师,你需要给每个小朋友一个分数,分数是这样规定的:第一个小朋友的分数是他的特征值,其它小朋友的分数为排在他前面的所有小朋友中(不包括他本人),小朋友分数加上其特征值的最大值。

请计算所有小朋友分数的最大值,输出时保持最大值的符号,将其绝对值对p 取模后输出。

【输入】输入文件为number.in。

第一行包含两个正整数n、p,之间用一个空格隔开。

第二行包含n 个数,每两个整数之间用一个空格隔开,表示每个小朋友手上的数字。

【输出】输出文件名为number.out。

输出只有一行,包含一个整数,表示最大分数对p 取模的结果。

【输入输出样例1】number.in number.out215 9971 2 3 4 5【输入输出样例说明】小朋友的特征值分别为1、3、6、10、15,分数分别为1、2、5、11、21,最大值21 对997的模是21。

【输入输出样例2】number.in number.out-15 7-1 -1 -1 -1 -1【输入输出样例说明】小朋友的特征值分别为-1、-1、-1、-1、-1,分数分别为-1、-2、-2、-2、-2,最大值-1对7的模为-1,输出-1。

【数据范围】对于50%的数据,1 ≤ n ≤ 1,000,1 ≤ p ≤ 1,000所有数字的绝对值不超过1000;对于100%的数据,1 ≤ n ≤ 1,000,000,1 ≤ p ≤ 109,其他数字的绝对值均不超过109。

4.车站分级(level.cpp/c/pas)【问题描述】一条单向的铁路线上,依次有编号为1, 2, …, n 的n 个火车站。

每个火车站都有一个级别,最低为1 级。

现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站x,则始发站、终点站之间所有级别大于等于火车站x 的都必须停靠。

(注意:起始站和终点站自然也算作事先已知需要停靠的站点)例如,下表是5 趟车次的运行情况。

其中,前4 趟车次均满足要求,而第5 趟车次由于停靠了3 号火车站(2 级)却未停靠途经的6 号火车站(亦为2 级)而不满足要求。

1 2 3 4 5 6 7 8 9 车站编号车站级别3 1 2 1 3 2 1 1 3 车次1 始→→→停→→→停→终2 始→→→停→终3 始→→→→→→→停→→→→→→→终4 始→停→停→停→停→终5 始→→→停→→→→→→→终现有m 趟车次的运行情况(全部满足要求),试推算这n 个火车站至少分为几个不同的级别。

【输入】输入文件为level.in。

第一行包含2 个正整数n, m,用一个空格隔开。

第i + 1 行(1 ≤ i≤ m)中,首先是一个正整数s i(2 ≤ s i≤ n),表示第i 趟车次有s i 个停靠站;接下来有s i 个正整数,表示所有停靠站的编号,从小到大排列。

每两个数之间用一个空格隔开。

输入保证所有的车次都满足要求。

【输出】输出文件为level.out。

输出只有一行,包含一个正整数,即n 个火车站最少划分的级别数。

【输入输出样例】level.in level.out9 224 1 35 63 3 5 69 33 4 1 3 5 63 3 5 63 1 5 9【数据范围】对于20%的数据,1 ≤ n, m ≤ 10;对于50%的数据,1 ≤ n, m ≤ 100;对于100%的数据,1 ≤ n, m ≤ 1000。

相关文档
最新文档