NOIP2013复赛普及组试题

合集下载

信息学奥赛NOIP普及组历届试题分析

信息学奥赛NOIP普及组历届试题分析
53
二、模拟类试题
有些问题,我们很难建立数学模型,或者很难 用计算机建立递推、递归、枚举、回溯法等算 法。在这种情况下,一般采用模拟策略。
所谓模拟策略就是模拟某个过程,通过改变数 学模型的各种参数,进而观察变更这些参数所 引起过程状态的变化,由此展开算法设计。
金币 (noip2015普及组第一题)
输入样例:
70 3 71 100
69 1 12
输出样例:
3
(1 <= T <= 1000) (1 <= M <= 100)
采药 (noip2005普及组第三题)
题目大意:共m株草药,每株草药有一个价值 和采摘的时间,问t时间能采摘到的草药的最大 价值。
采药 (noip2005普及组第三题)
输入格式:
第一行有两个整数T和M,T代表总共能够用来采药的时间,M 代表山洞里的草药的数目。接下来的M行每行包括两个在1到 100之间(包括1和100)的整数,分别表示采摘某株草药的时 间和这株草药的价值。
输出格式:
一行只包含一个整数,表示在规定的时间内,可以采到的草药 的最大总价值。
螺旋方阵试题分析
本题首先让我们想到传统的模拟,从[1,1]开 始往数组中填充数字,但对于[30000,30000] 的数组,直接爆零。
对于读入的n, x, y,先判断(x,y)在第几圈, 再模拟圈内的数字。
螺旋方阵试题分析
如:n=4, (2,2)在第2圈,(3,1)在第1圈。 n=6,(4,5)在第2圈
移动;如果前方是未曾经过的格子,则继续前进, 否则右转;重复上述操作直至经过矩阵中所有格子。 根据经过顺序,在格子中依次填入1,2,3,....,便构 成了一个螺旋矩阵。 现给出矩阵大小n以及i和j,请你求出该矩阵中第 i行第j列的数是多少。 下图是一个n=4时的螺旋矩阵。

NOIP2013普及组模拟试题3

NOIP2013普及组模拟试题3

NOIP模拟题bronze刘启鹏竞赛时间:2010年11月13日 8:30-11:30注意:最终测试时,所有编译命令均不打开任何优化开关。

Linear T riple【问题描述】一个线性三元组是指一个满足如下关系有序三元组(s1,s2,s3):s3-s2=s2-s1.如(1,2,3),(2,4,6),(14,21,28)都是满足条件的线性三元组.对于给定的一个S个元素的集合(元素值在1..100间),请输出可以组成的线性三元组的数目。

【输入格式】第一行:一个整数,S (3 <= S <= 30)。

第二行:S个用空格隔开的整数.【输出格式】仅一行,包含一个整数,可以组成的线性三元组的数量,保证在长整形范围内。

【样例输入1】71 2 3 4 6 8 9【样例输出1】5【数据说明】这些三元组是:1 2 32 3 42 4 63 6 94 6 8。

NOIP模拟题bronze 刘启鹏P vs NPP vs NP【问题描述】P/NP问题是在理论信息学中计算复杂度理论领域里至今没有解决的问题,它被“克雷数学研究所”(Clay Mathematics Institute, 简称CMI)在千禧年大奖难题中收录。

P/NP问题中包含了复杂度类P与NP的关系。

1971年Stephen A. Cook 和Leonid Levin 相对独立的提出了下面的问题,即是否两个复杂度类P和NP是恒等的(P=NP?)。

这个问题似乎难了点,放在NOIP第一题不太人道。

放心,你需要解决的只是一个简化版的问题:P=N*P?【输入格式】输入的第一行包含两个数,分别为N和P。

【输出格式】如果P=N*P,输出True。

否则输出False。

【样例输入1】1 123789325797235098234798235709235092357092357092347092370924234 【样例输出1】True【样例输入2】-3.14159265358979323846264338327950288419716939937510 0【样例输出2】True【数据说明】保证读入不会超过0.1s。

【通用】信息学奥赛NOIP普及组历届试题分析.ppt

【通用】信息学奥赛NOIP普及组历届试题分析.ppt
枚举法其实是最简单的搜索算法。
.,.,
4
珠心算测验 (noip2014普及组第一题)
珠心算是一种通过在脑中模拟算盘变化来完成快 速运算的一种计算技术。珠心算训练,既能够开 发智力,又能够为日常生活带来很多便利,因而 在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加 法能力的测验方法。他随机生成一个正整数集合, 集合中的数各不相同,然后要求学生回答:其中 有多少个数,恰好等于集合中另外两个(不同的) 数之和? 最近老师出了一些测验题,请你帮忙求 出答案。
不过,如果把调查结果就以这种方式呈现出来,大 多数人肯定不会满意。因为这个比例的数值太大, 难以一眼看出它们的关系。对于上面这个例子,如 果把比例记为 5:3,虽然与 真实结果有一定的误差, 但依然能够较为准确地反映调查结果,同时也显得 比较直观。
现给出支持人数 A,反对人数 B,以及一个上限 L, 请你将 A 比 B 化简为 A’比 B’,要求在 A’和 B’均 不大于 L 且 A’和 B’互质(两个整数的最大公约数 是 1)的前提下,A’/B’ ≥ A/B 且 A’/B’ - A/B 的值 尽可能小。
输入样例 2 23 ?*? *??
输出样例 2 mine.out 2*1 *21
对于 100%的数据,1≤n≤100,1≤m≤100
.,.,
10
比例简化 (noip2014普及组第二题)
在社交媒体上,经常会看到针对某一个观点同意与 否的民意调查以及结果。例如,对某 一观点表示 支持的有 1498 人,反对的有 902 人,那么赞同与 反对的比例可以简单的记为1498:902。
.,.,
11
比例简化 (noip2014普及组第二题)
输入格式 输入共一行,包含三个整数 A,B,L,每两个整

NOIP普及组历届试题分析

NOIP普及组历届试题分析

对于100%的数据,3 ≤ n ≤ 100 测验题给出的正整数大小不超过10,000。
试题分析

题意大意:给你n个数,在这n个数中,找 到满足A+B=C的C的个数,注意不是这个 等式的个数。
样例中,1,2,3,4有1+2=3,1+3=4两个。

由于本题数据规模n<=100,我们可以直接
枚举C, A, B,三层循环解决问题。
扫雷游戏 (noip2015普及组第二题)
输入样例 1 33 *?? ??? ?*? 输入样例 2 23 ?*? *??
输出样例 1 mine.out *10 221 1*1 输出样例 2 mine.out 2*1 *21
对于 100%的数据,1≤n≤100,1≤m≤100
问题分析:
本题也是简单的枚举类试题。 我们从雷区的第一行第一列(1,1)开始,判断它周围 有多少个地雷。 由于本题读入的是字符,读入时需要注意: readln(n,m); for i=1 to n do begin for j=1 to m do read(a[i][j]); readln; end;
比例简化 (noip2014普及组第二题)



在社交媒体上,经常会看到针对某一个观点同意与 否的民意调查以及结果。例如,对某 一观点表示 支持的有 1498 人,反对的有 902 人,那么赞同与 反对的比例可以简单的记为1498:902。 不过,如果把调查结果就以这种方式呈现出来,大 多数人肯定不会满意。因为这个比例的数值太大, 难以一眼看出它们的关系。对于上面这个例子,如 果把比例记为 5:3,虽然与 真实结果有一定的误差, 但依然能够较为准确地反映调查结果,同时也显得 比较直观。 现给出支持人数 A,反对人数 B,以及一个上限 L, 请你将 A 比 B 化简为 A’比 B’,要求在 A’和 B’均 不大于 L 且 A’和 B’互质(两个整数的最大公约数 是 1)的前提下,A’/B’ ≥ A/B 且 A’/B’ - A/B 的值 尽可能小。

NOIP2013年普及组复赛真题解析

NOIP2013年普及组复赛真题解析

NOIP2013年普及组复赛真题解析T1 计数问题解析:对于100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。

枚举每个数的每一位就行。

程序:include<cstdio>#include<iostream>using namespace std;int main(){int n,x;cin>>n>>x;int i,c=0;for(i=1;i<=n;i++){int a=i;while(a!=0){if(a%10==x)c++;a/=10;}}cout<<c;return 0;}===================================================T2 表达式求值解析:对于30%的数据,0≤表达式中加法运算符和乘法运算符的总数≤100;对于80%的数据,0≤表达式中加法运算符和乘法运算符的总数≤1000;对于100%的数据,0≤表达式中加法运算符和乘法运算符的总数≤100000。

程序:#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;char last;char c;int x=0;int a=0,b=1;int sum=0;int main(){int i,j;bool flag=1;do{if(cin>>c);else{flag=0;c='+';//相当于在整个串最后补个+号,以完成全部运算}if(c>='0' && c<='9')x=x*10+c-'0';//读取数else{a=x;//如果读到的不是数字,把之前读到的数存起来x=0;//初始化}if(c=='*'){//处理乘号,方法是先记下这个数,下次读到乘号再计算last=1;b=(a*b)%10000;//有连续乘号时,累乘}if(c=='+'){if(last){//上一个是乘号的情况a=(a*b)%10000;sum=(sum+a)%10000;b=1;last=0;}else sum+=a;//上一个是加号的情况}}while(flag==1);printf("%d",sum%10000);return 0;}===================================================T3解析:Case 1:小朋友的特征值分别为1、3、6、10、15,分数分别为1、2、5、11、21,最大值21对997 的模是21。

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. 编写一个函数,实现计算一个整数的阶乘。

NOIP2013复赛模拟8解题报告

NOIP2013复赛模拟8解题报告

NOIP2008模拟试题1(4P24)普及组1.报数(read.pas/c/cpp) OIP2010模拟试题4(4P36)[题目描述]CG同学又弄到一批新牛,新牛到了农场以后,首先要学习汉语,数的朗读成为新牛的一个难题,朗读绝对值小于10亿的数。

新牛们知道汉语中有如下的读数规则:1.首先读符号位,然后读整数部分,整数部分之后可能出现小数点,如果有小数部分则小数点一定出现,并且读出小数点之后读小数部分。

2.符号位的读法是:⑴正数,不论正号”+”是否出现,都不必读出符号位;⑵负数的最左边的符号是”-“,读成”负”(以“F”来表示“负”)。

3.整数部分的读法是:⑴如果整数部分不存在或者整数部分全是零则直接读成“零”(以“0”来表示“零”);⑵否则从整数部分中最左边的非零数字开始读起,然后以十、百、千、万、亿(分别以”S”、”B”、”Q”、”W”、“Y”来表示)等数量单位来拼读整数部分。

4.整数部分中:⑴每一个非零数字都必须结合各个相应的数量单位读出来;⑵每一段连续的“零”只能读成一个“零”,但是某一段连续的“零”的左侧或者右侧不存在非零数字(这里只考虑整数部分)则这一段“零”不应该读出来;5.如果有小数部分,则首先读“点”(以“D”来表示“点”),然后从左至右有顺序地读出各个小数位。

在读小数部分的时候不可以使用十、百、千、万、亿等数量单位;但是小数部分的每一个数字都需要读出来,连续的零不可以读成一个“零”,而应该分别读出。

6.如果数中有小数点而没有小数部分,则不应该把小数点读出来。

例如:-0020030004.567应该读成”F2Q03W04D567”,000.89应该读成”0D89”。

请你编写程序帮助新牛把给定的数正确地读出来。

[输入数据]输入文件仅一行,存放了一个数(不超过50字符),其绝对值小于10亿.[输出数据]输出文件仅一行,输出这个数的正确读法。

[样例输入]-0020030004.567[样例输出]F2Q03W04D567program cz;varst,s,t:string;p,i:integer;beginassign(input,'read.in');reset(input);assign(output,'read.out');rewrite(output);readln(st);if st[1]='-' then begindelete(st,1,1);i:=1;while (i<length(st)) do beginif (st[i]<>'0') then beginwrite('F');break;end;inc(i);end;end;p:=pos('.',st);if (p=0) then p:=length(st);i:=1;while (st[i]='0') and (i+1<p) doinc(i);delete(st,1,i-1);p:=pos('.',st)-1;if (p=-1) then p:=length(st);s:='';i:=(p-1) mod 4+1;while (i>0) and (i<=p) do begint:='';if (i>3) thenif (st[i-3]>'0') thent:=t+st[i-3]+'Q'else if (s<>'') and (s[length(s)]<>'0') thent:=t+'0';if (i>2) thenif (st[i-2]>'0') thent:=t+st[i-2]+'B'else if (t<>'') and (t[length(t)]<>'0') thent:=t+'0';if (i>1) thenif (st[i-1]>'0') thent:=t+st[i-1]+'S'else if (t<>'')and(t[length(t)]<>'0') thent:=t+'0';if (i>0) thenif (st[i]>'0') then t:=t+st[i]+'';if (t[length(t)]='0') then delete(t,length(t),1); if (t<>'') then begins:=s+t;case (p-i) div 4 of1:s:=s+'W';2:s:=s+'Y';end;end;inc(i,4);end;if (s='') then s:='0';write(s);if (pos('.',st)>0)and(length(st)>pos('.',st)) thenwrite('D',copy(st,p+2,length(st)-p-1));writeln;close(input);close(output);end.2.背单词(words)源程序名:words.pas/c/cpp输入文件名:word.in输出文件名:word.out时限:1秒问题描述:英语四级考试临近了,小Y却发现他已经把以前学的单词几乎忘光了。

NOIP普及组复赛试题

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 回文日期题目描述在日常生活中,通过年、月、日这三个要素能够表示出一个唯一确信的日期。

NOIp2013普及组解题报告

NOIp2013普及组解题报告

NOIp2013 普及组 解题报告
By 绍兴文理学院附中 任轩笛
NOIp2013 普及组 解题报告
By 绍兴文理学院附中 任轩笛
代码_算法一
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 var i,j,k,l,m,n,ToTm,ToTf:Longint; s,Ans:Ansistring; Tmp,Tmp1,Tmp2:Int64; Dis:array[' '..'@'] of Longint; Sm:array[0..200000] of Int64; sf:array[0..200000] of char; Function Math(c:char):Boolean; begin Exit((c>='0')and(c<='9')); End; Procedure Doit(S:Ansistring); var i,j,k:Longint; ch:char; Begin i:=1; While i<=Length(s) do Begin If Math(s[i]) then Begin Tmp:=0; While Math(s[i]) do Begin Tmp:=Tmp*10+ord(s[i])-48; Inc(i); End; Inc(ToTm);Sm[ToTM]:=Tmp mod 10000; End Else Begin ch:=s[i]; While Dis[sf[ToTf]]<=Dis[ch] do Begin Tmp1:=Sm[ToTm]; Tmp2:=Sm[ToTm-1]; If Sf[ToTf]='+' then Tmp:=Tmp1+Tmp2 Else Tmp:=Tmp1*Tmp2; Sm[ToTm-1]:=Tmp mod 10000; Sm[ToTm]:=0; Dec(ToTm); Sf[Totf]:=' '; Dec(ToTf); End; By 绍兴文理学院附中 任轩笛

【noip2013普及组试题】车站分级

【noip2013普及组试题】车站分级

【noip2013普及组试题】车站分级题目描述:每个火车站都有一个级别,最低为 1 级。

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

现有 m 趟车次的运行情况(全部满足要求),试推算这 n 个火车站至少分为几个不同的级别。

输入输出格式:输入文件为。

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

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

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

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

输出文件为。

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

解题思路:这道题可以使用拓扑排序的方法进行求解。

我们可以使用一个数组 dist 来记录每个火车站的级别,其中 dist[i] 表示火车站 i 的级别。

初始时,将所有火车站的级别都设为无穷大。

然后对于每趟车次,如果它停靠了火车站 x,则将火车站 x 的级别设为当前最低级别减去 1。

最后,我们统计每个级别的火车站数量,即可得到最少需要划分的级别数。

具体实现如下:1. 初始化所有火车站的级别为无穷大。

2. 对于每趟车次,遍历它停靠的所有火车站,如果火车站 x 的级别大于等于始发站和终点站的级别,则将火车站 x 的级别设为当前最低级别减去 1。

3. 统计每个级别的火车站数量,即为最少需要划分的级别数。

NOIP2013普及组模拟试题1

NOIP2013普及组模拟试题1

全国信息学奥林匹克联赛(NOIP2013)复赛模拟普及组一.题目概览中文题目名称lignment 消息传递Cow Crossings算周长英文题目名称lignment relay crossings perimeter可执行文件名lignment relay crossings perimeter 输入文件名lignment.in relay.in crossings.in perimeter.in 输出文件名lignmentout relay.out crossings.out perimeter.out 每个测试点时限1秒1秒1秒1秒测试点数目10 10 10 10每个测试点分值10 10 10 10 比较方式全文比较全文比较全文比较全文比较题目类型传统传统传统传统二.提交源程序文件名对于pascal语言alignment pas relay.pas crossings.pas perimeter.pas 对于C语言alignment.c relay.c crossings.c perimeter.c 对于C++语言alignment.cpp relay.cpp crossings.cpp perimeter.cpp三.编译命令(不包含任何优化开关)对于pascal语言fpc queue.pas fpc windows.pas fpc s4.pas fpc book.pas对于C语言gcc –o queuequeue.c gcc –o windowswindows.cgcc –o s4s4.cgcc –o bookbook.c对于C++语言g++ –o queuequeue.cpp g++ –o windowswindows.cppg++ –o s4s4.cppg++ –obookbook.cpp四.运行内存限制运行内存上限50M 50M 50M 50M注意事项:1、文件名(程序名和输入输出文件名)必须使用小写。

noip普及组复赛答案

noip普及组复赛答案

noip普及组复赛答案【篇一:noip普及组复赛入门测试(答案+测试数据)】class=txt>新龟兔赛跑比赛即将举行,此次龟兔赛跑比赛的规则与以往有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是考察谁在规定时间内跑的路程更长,且兔子和乌龟跑步都是匀速的。

由于兔子的坏习惯,它总喜欢把比赛的总时间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*tu*(t-k) then writeln(1);if v*tu*(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米高度自由下落,落地后反弹起,又落地,又弹起,??。

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

NOIP2013复赛普及组试题

NOIP2013复赛普及组试题

NOIP2013复赛普及组试题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】【输入输出样例3】【输入输出样例说明】样例1 计算的结果为8,直接输出8。

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

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

noip普及组复赛模拟试题26(答案)1.数字反转(revere.cpp/c/pa)【问题描述】给定一个整数,请将该数各个位上数字反转得到一个新数。

新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

【输入】输入文件名为revere.in。

输入共1行,一个整数N。

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

输出共1行,一个整数,表示反转后的新数。

【输入输出样例1】revere.inrevere.out123321【输入输出样例2】Revere.inrevere.out-380-83【数据范围】-1,000,000,000≤N≤1,000,000,000。

var3,1,2:tring;n,i:integer;beginaign(input,'revere.in');reet(input);aign(output,'revere.out');rewrite(output);read(1);n:=length(1);if1[1]='-'thenbegin2:='-';fori:=1ton-1do1[i]:=1[i+1];delete(1,n,1);end;n:=length(1);fori:=1tondo3:=3+1[n-i+1];i:=1;while(3[i]='0')and(length(3)>1)dodelete(3,1,1);write(2+3);cloe(input);cloe(output);end.2.统计单词数(tat.cpp/c/pa)【问题描述】一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。

现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置。

小朋友的数字(noip2013普及组第三题)参考答案

小朋友的数字(noip2013普及组第三题)参考答案
sum=shuzi[0];
for(i=1;i<n;i++)
{
sum=sum+shuzi[i];
if(sum>tezheng[i-1])
tezheng[i]=sum;
else
tezheng[i]=tezheng[i-1];
printf("%d\n",max);
}
else
{
max=max%p;
printf("%d\n",max);
}
getch();
}
{
int n,p,shuzi[1000],tezheng[1000],fenshu[1000],sum,i,max;
scanf("%d %d",&n,&p);
for(i=0;i<n;i++)
scanf("%d",&shuzi[i]);
tezheng[0]=shuzi[0];
小朋友的数字(noip2013普及组第三题)(number.cpp/c/pas)
描述
有 n 个小朋友排成一列。每个小朋友手上都有一个数字,这个数字可正可负。规定每个小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋友手上的数字之和的最大值。 作为这些小朋友的老师,你需要给每个小朋友一个分数,分数是这样规定的:第一个小朋友的分数是他的特征值,其它小朋友的分数为排在他前面的所有小朋友中(不包括他本人),小朋友分数加上其特征值的最大值。
}
for(i=0;i<n;i++)

NOIP2013普及组C试题

NOIP2013普及组C试题

第十九届全国青少年信息学奥林匹克联赛初赛普及组C 语言试题竞赛时间:2013 年10 月13 日14:30~16:30选手注意:●试题纸共有9 页,答题纸共有2 页,满分100 分。

请在答题纸上作答,写在试题纸上的一律无效。

●不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共20 题,每题1.5 分,共计30 分;每题有且仅有一个正确选项)1. 一个32 位整型变量占用()个字节。

A. 4B. 8C. 32D. 1282. 二进制数11.01 在十进制下是()。

A. 3.25B. 4.125C. 6.25D. 11.1253. 下面的故事与()算法有着异曲同工之妙。

从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‚从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事:‘从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事....’‛A. 枚举B. 递归C. 贪心D. 分治4. 逻辑表达式()的值与变量A 的真假无关。

A. (A ˅ B) ˅ ¬AB. (A ˅ B) ˅¬BC. (A ˅ B) ˅(¬A ˅ B)D. (A ˅ B) ˅ ¬A ˅ B5. 将(2, 6, 10, 17)分别存储到某个地址区间为0~10 的哈希表中,如果哈希函数h(x) =(),将不会产生冲突,其中a mod b 表示a 除以b 的余数。

A. x mod 11B. x2 mod 11C. 2x mod 11D. ⌊⌋mod 11,其中⌊⌋表示下取整6. 在十六进制表示法中,字母A 相当于十进制中的()。

A. 9B. 10C. 15D. 167. 下图中所使用的数据结构是()。

压入 AA压入 BB A弹出 BA压入 CC AA. 哈希表B. 栈C. 队列D. 二叉树8. 在 Windows 资源管理器中,用鼠标右键单击一个文件时,会出现一个名为“复制”的 操作选项,它的意思是( )。

NOIP普及组复赛模拟试题(一)

NOIP普及组复赛模拟试题(一)

NOIP普及组复赛模拟试题一PROBLEM 1:二进制字典排序字符串(Filename:Seq.pas Inputfile:seq.in Outputfile:seq.out)[题目描述]假设字符串的长度为N (0 < N < 44), 仅由0与1组成,没有二个1是相邻的。

110就不是一个合法的,0101就是一个合法的四位的字符串,将它们按字典顺序排列下来,请问第K个(0 < K < 1000000000)字符串是哪一个,如果K的值超过的N位字符串的总个数,就输出-1。

[Input]一行包含两个正整数N 和 K。

[Output]相应的字符串或-1。

Sampleinput Output3 1 000PROBLEM 2: 非琐碎数(Filename:Trivial.pas Inputfile:trivial.in Outputfile:trivial.out)[题目描述]规定正整数的琐碎度为它的除了自身以外的所有约数的和除以它自己的值。

如10的琐碎度为0.8=(1+2+5)/10, 20的琐碎度为1.1 = (1 + 2 + 4 + 5 + 10) / 20。

给你两个数 0 < I <= J < 1000000,找出满足 I <= N <= J 的 N,使 N 是琐碎度最小的整数。

[Input]两个数 I 和J, 0 < I ≤ J ≤ 1000000。

[Output]输出N。

Sampleinput output24 28 25PROBLEM 3:石头分堆(Filename:Stone.pas Inputfile:stone.in Outputfile:stone.out)[题目描述]你有一堆石头,重量为w[1],w[2]..w[n]。

把他们分成两堆,使两堆重量的差最小。

[Input]第一个数n(1<=n<=20)石头的个数。

接下来n个数W1…Wn(1<=Wi<=100000)石头的重量。

NOIP2013普及组第二题_表达式求值

NOIP2013普及组第二题_表达式求值
ifபைடு நூலகம்ch == '*') num[top] = num[top] * x%10000; if(ch == '+') num[++top] = x; }
while(top) ans += num[top--] % 10000;
cout << ans%10000 << endl;
return 0; }
int num[MAXN], top; int ans;
int main() { // freopen("expr.in","r",stdin); // freopen("expr.out","w",stdout);
int x; cin >> x; num[++top] = x;
char ch; while(cin >> ch >> x) {
} while(!n.empty()){
ans+=n.top();n.pop(); ans%=10000; } cout<<ans%10000; return 0; }
#include <bits/stdc++.h> using namespace std;
const int MAXN = 100000 + 10;
博客园 用户登录 代码改变世界 密码登录 短信登录 忘记登录用户名 忘记密码 记住我 登录 第三方登录/注册 没有账户, 立即注册
NOIP2013普及组第二题 _表达式求值
//读入fu #include <bits/stdc++.h> using namespace std; stack<int> n; stack<char> op; int main() {

NOIPCSP普及组历年复赛真题题单(1998~2020)

NOIPCSP普及组历年复赛真题题单(1998~2020)

NOIPCSP普及组历年复赛真题题单(1998~2020)**转载⾃: **1.CSP-J 2020T1 优秀的拆分位运算、进制转换T2 直播获奖桶排序T3 表达式栈、深搜T4 ⽅格取数动态规划2.CSP-J 2019T1 数字游戏字符串T2 公交换乘模拟、队列T3 纪念品背包T4 加⼯零件⼴搜、最短路3.NOIP2018 普及组T1 标题统计字符串T2 龙虎⽃枚举、预处理T3 摆渡车动态规划T4 对称⼆叉树⼆叉树4.NOIP2017 普及组T1 成绩枚举模拟T2 图书管理员结构体排序T3 棋盘深搜、剪枝T4 跳房⼦⼆分、动态规划5.NOIP2016 普及组T1 买铅笔枚举模拟T2 回⽂⽇期回⽂T3 海港⼤模拟、队列T4 魔法阵枚举、前缀和6.NOIP2015 普及组T1 ⾦币枚举模拟T2 扫雷游戏枚举模拟T3 求和组合数学T4 推销员贪⼼、优先队列7.NOIP2014 普及组T1 珠⼼算测验模拟T2 ⽐例简化枚举、gcdT3 螺旋矩阵模拟、找规律T4 ⼦矩阵动态规划8.NOIP2013 普及组T1 计数问题枚举模拟T2 表达式求值栈T3 ⼩朋友的数字动态规划T4 车站分级拓扑排序9.NOIP2012 普及组T1 质因数分解枚举模拟、质数T2 寻宝模拟、取模T3 摆花背包、动态规划T4 ⽂化之旅最短路10.NOIP2011 普及组T1 数字反转进制转换T2 统计单词数字符串T3 瑞⼠轮归并排序T4 表达式的值动态规划、栈11.NOIP2010 普及组T1 数字统计模拟枚举T2 接⽔问题模拟T3 导弹拦截贪⼼T4 三国游戏贪⼼、博弈12.NOIP2009 普及组T1 多项式输出模拟T2 分数线划定结构体排序T3 细胞分裂约数T4 道路游戏动态规划13.NOIP2008 普及组T1 ISBN 号码字符串T2 排座椅贪⼼T3 传球游戏动态规划T4 ⽴体图⼤模拟14.NOIP2007 普及组T1 奖学⾦结构体排序T2 纪念品分组贪⼼T3 守望者的逃离贪⼼T4 Hanoi 双塔问题⾼精度15.NOIP2006 普及组T1 明明的随机数枚举模拟T2 开⼼的⾦明 01背包T3 Jam 的计数法模拟T4 数列进制转换16.NOIP2005 普及组T1 陶陶摘苹果枚举模拟T2 校门外的树枚举模拟T3 采药 01背包T4 循环⾼精度17.NOIP2004 普及组T1 不⾼兴的津津模拟T2 花⽣采摘贪⼼T3 FBI 树递归、⼆叉树T4 ⽕星⼈ STL、深搜18.NOIP2003 普及组T1 乒乓球模拟T2 数字游戏动态规划T3 栈组合数学、卡特兰数T4 麦森数⾼精度19.NOIP2002 普及组T1 级数求和枚举T2 选数深搜T3 产⽣数深搜T4 过河卒递推、动态规划20.NOIP2001 普及组T1 数的计算递推、递归T2 最⼤公约数和最⼩公倍数问题枚举、GCD T3 求先序排列⼆叉树T4 装箱问题 01背包21.NOIP2000 普及组T1 计算器的改良⼀元⼀次⽅程、模拟T2 税收与补贴问题不等式、数论T3 乘积最⼤动态规划、⾼精度T4 单词接龙深搜22.NOIP1999 普及组T1 Cantor表找规律T2 回⽂数进制转换T3 旅⾏家的预算贪⼼23.NOIP1998 普及组T1 三连击简单数学、枚举、进制转换T2 阶乘和⾼精度T3 2的幂次⽅表⽰深搜。

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

CCF全国信息学奥林匹克联赛(NOIP2013)复赛
普及组
(请选手务必仔细阅读本页内容)
一.题目概况
二.提交源程序文件名
三.编译命令(不包含任何优化开关)
注意事项:
1、文件名(程序名和输入输出文件名)必须使用英文小写。

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

3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) 64x2 Dual Core CPU 5200+,,内存2G,上述时限以此配置为准。

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

5、特别提醒:评测在NOI Linux 下进行。

1.记数问题
c/pas)
【问题描述】
试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?例如,在1 到11 中,即在1、2、3、4、5、6、7、8、9、10、11 中,数字1 出现了4 次。

【输入】
输入文件名为。

输入共1 行,包含2 个整数n、x,之间用一个空格隔开。

【输出】
输出文件名为。

输出共1 行,包含一个整数,表示x 出现的次数。

【输入输出样例】
【数据说明】
对于100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。

2.表达式求值
c/pas)
【问题描述】
给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。

【输入】
输入文件为。

输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为0 到231-1 之间的整数。

输入数据保证这一行只有0~ 9、+、*这12 种字符。

【输出】
输出文件名为。

输出只有一行,包含一个整数,表示这个表达式的值。

注意:当答案长度多于4 位时,请只输出最后4 位,前导0 不输出。

【输入输出样例1】
【输入输出样例2】
【输入输出样例3】
【输入输出样例说明】
样例1 计算的结果为8,直接输出8。

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

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

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

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

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

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

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

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

【输入】
输入文件为。

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

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

【输出】
输出文件名为。

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

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

【输入输出样例2】
小朋友的特征值分别为-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.车站分级
c/pas)
【问题描述】
一条单向的铁路线上,依次有编号为1, 2, …, n 的n 个火车站。

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

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

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

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

现有m 趟车次的运行情况(全部满足要求),试推算这n 个火车站至少分为几个不同的级别。

【输入】
输入文件为。

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

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

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

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

【输出】
输出文件为。

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

【输入输出样例】
【数据范围】
对于20%的数据,1 ≤ n, m ≤ 10;对于
50%的数据,1 ≤ n, m ≤ 100;
对于100%的数据,1 ≤ n, m ≤ 1000。

相关文档
最新文档