NOIP2005普及组复赛试题

合集下载

信息学奥赛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时的螺旋矩阵。

CSP-J(NOIP普及组)历年复赛真题考察内容(1998~2021)

CSP-J(NOIP普及组)历年复赛真题考察内容(1998~2021)

CSP-J(NOIP普及组)历年复赛真题考察内容(1998~2021)1.CSP-J 2021思维、选择结构排序、归并排序⼤模拟双向链表、模拟2.CSP-J 2020位运算、进制转换桶排序栈、深搜动态规划(⾼级)3.CSP-J 2019字符串模拟、队列背包⼴搜、最短路4.NOIP2018 普及组字符串枚举、预处理动态规划(⾼级)⼆叉树5.NOIP2017 普及组顺序结构结构体排序深搜、剪枝⼆分、动态规划6.NOIP2016 普及组⼀重循环回⽂⼤模拟、队列枚举、前缀和7.NOIP2015 普及组⼀重循环⼆维数组组合数学贪⼼、优先队列8.NOIP2014 普及组模拟枚举、gcd模拟、找规律动态规划(⾼级)9.NOIP2013 普及组⼆重循环栈动态规划(⾼级)拓扑排序10.NOIP2012 普及组⼀重循环、质数模拟、取模背包、动态规划最短路11.NOIP2011 普及组进制转换字符串归并排序动态规划(⾼级)、栈12.NOIP2010 普及组⼆维数组模拟贪⼼贪⼼、博弈13.NOIP2009 普及组模拟结构体排序约数动态规划(⾼级)14.NOIP2008 普及组字符串贪⼼动态规划(⾼级)结构体排序贪⼼贪⼼⾼精度16.NOIP2006 普及组⼀维数组01背包模拟进制转换17.NOIP2005 普及组⼀维数组⼀维数组01背包⾼精度18.NOIP2004 普及组⼀重循环贪⼼递归、⼆叉树STL、深搜19.NOIP2003 普及组模拟动态规划(⾼级)组合数学、卡特兰数⾼精度20.NOIP2002 普及组⼀重循环深搜深搜递推、动态规划21.NOIP2001 普及组递推、递归枚举、gcd⼆叉树⼀元⼀次⽅程、模拟不等式、数论动态规划、⾼精度深搜23.NOIP1999 普及组找规律进制转换贪⼼24.NOIP1998 普及组简单数学、枚举、进制转换⾼精度深搜。

NOIP2005普及组初赛试题及答案

NOIP2005普及组初赛试题及答案

第十一届全国青少年信息学奥林匹克联赛初赛试题(普及组pascal&C 语言二小时完成)●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●由OIFans()整理一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分, 共30分)1. 在字符串“ababacbabcbdecced”中出现次数最多的字母出现了()次。

A. 6B. 5C. 4D. 3E. 22. 设全集I = {a, b, c, d, e, f, g, h},集合A = {a, b, c, d, e, f},B = {c, d, e},C = {a, d},那么集合C B A ~ Ç Ç 为()。

A. {c, e}B. {d, e}C. {e}D. {c, d, e}E. {d, f}3. 和十进制数23的值相等的二进制数是()。

A. 10110B. 11011C. 11011D. 10111E. 100114. 完全二叉树的结点个数为11,则它的叶结点个数为()。

A. 4B.3C.5D. 2E. 65. 平面上有五个点A(5, 3), B(3, 5), C(2, 1), D(3, 3), E(5, 1)。

以这五点作为完全图G 的顶点,每两点之间的直线距离是图G 中对应边的权值。

以下哪条边不是图G 的最小生成树中的边()。

A. ADB. BDC. CDD. DEE. EA6. Intel的首颗16 位处理器是()。

A. 8088B. 80386C. 80486D. 8086E. Pentium7. 处理器A 每秒处理的指令数是处理器B 的2 倍。

某一特定程序P 分别编译为处理器A和处理器B 的指令,编译结果处理器A 的指令数是处理器B 的4 倍。

已知程序P 在处理器A 上执行需要1 个小时,那么在输入相同的情况下,程序P 在处理器B 上执行需要()小时。

A. 4B. 2C. 1D. 1 / 2E. 1 / 48. 以下哪个不是计算机的输出设备()。

2005年信息学奥赛NOIP普及组初赛试题及参考答案

2005年信息学奥赛NOIP普及组初赛试题及参考答案
│3
一、选择题
3. 和十进制数 23 的值相等的二进制数是( )。 A. 10110 B. 11011 C. 11011 D. 10111 E. 10011
│4
一、选择题
4. 完全二叉树的结点个数为 11,则它的叶结点个数 为( )。 A. 4 B.3 C.5 D. 2 E. 6
│5一、选择题│源自20一、选择题20. 设栈 S 的初始状态为空,元素 a, b, c, d, e, f, g 依次入栈,以下出栈序列不可能出 现的是( )。 A. a,b,c,e,d,f,g B. b,c,a,f,e,g,d C. a,e,d,c,b,f,g D. d,c,f,e,b,a,g E. g,e,f,d,c,b,a
│ 21
二、问题解答 1、将数组{32,74,25,53,28,43,86,47}中的元素 按从小到大的顺序排列,每次可以交换任意两个 元素,最少需要交换_______ 次。
│ 22
二、问题解答
2. 有 3 个课外小组:物理组,化学组和生物组。今有张、 王、李、赵、陈 5 名同学,已知张、王为物理组成员, 张、李、赵为化学组成员,李、赵、陈为生物组成员。如果 要在 3 个小组中分别选出 3 位组长,一位同学最多只能 担任一个小组的组长,共有_______种选择方案。
5. 平面上有五个点 A(5,3),B(3,5),C(2,1),D(3,3),E(5,1)。以这五点 作为完全图 G 的顶点,每两点之间的直线距离是图 G 中对应边的权 值。以下哪条边不是图 G 的最小生成树中的边( )。 A. AD B. BD C. CD D. DE E. EA
│6
一、选择题
6. Intel 的首颗 16 位处理器是( )。 A. 8088 B. 80386 C. 80486 D. 8086 E. Pentium

NOIP2005普及组初赛试题及答案

NOIP2005普及组初赛试题及答案

第十一届全国青少年信息学奥林匹克联赛初赛试题(普及组pascal&C 语言二小时完成)●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●由OIFans()整理一.选择一个正确答案代码(A/B/C/D/E),填入每题的括号内(每题1.5分, 共30分)1. 在字符串“ababacbabcbdecced”中出现次数最多的字母出现了()次。

A. 6B. 5C. 4D. 3E. 22. 设全集I = {a, b, c, d, e, f, g, h},集合A = {a, b, c, d, e, f},B = {c, d, e},C = {a, d},那么集合C B A ~ Ç Ç 为()。

A. {c, e}B. {d, e}C. {e}D. {c, d, e}E. {d, f}3. 和十进制数23的值相等的二进制数是()。

A. 10110B. 11011C. 11011D. 10111E. 100114. 完全二叉树的结点个数为11,则它的叶结点个数为()。

A. 4B.3C.5D. 2E. 65. 平面上有五个点A(5, 3), B(3, 5), C(2, 1), D(3, 3), E(5, 1)。

以这五点作为完全图G 的顶点,每两点之间的直线距离是图G 中对应边的权值。

以下哪条边不是图G 的最小生成树中的边()。

A. ADB. BDC. CDD. DEE. EA6. Intel的首颗16 位处理器是()。

A. 8088B. 80386C. 80486D. 8086E. Pentium7. 处理器A 每秒处理的指令数是处理器B 的2 倍。

某一特定程序P 分别编译为处理器A和处理器B 的指令,编译结果处理器A 的指令数是处理器B 的4 倍。

已知程序P 在处理器A 上执行需要1 个小时,那么在输入相同的情况下,程序P 在处理器B 上执行需要()小时。

A. 4B. 2C. 1D. 1 / 2E. 1 / 48. 以下哪个不是计算机的输出设备()。

NOIP2005普及组circle循环

NOIP2005普及组circle循环

【问题描述】乐乐是一个聪明而又勤奋好学的孩子。

他总喜欢探求事物的规律。

一天,他突然对数的正整数次幂产生了兴趣。

众所周知,2的正整数次幂最后一位数总是不断的在重复2,4,8,6,2,4,8,6……我们说2的正整数次幂最后一位的循环长度是4(实际上4的倍数都可以说是循环长度,但我们只考虑最小的循环长度)。

类似的,其余的数字的正整数次幂最后一位数也有类似的循环现象:这时乐乐的问题就出来了:是不是只有最后一位才有这样的循环呢?对于一个整数n的正整数次幂来说,它的后k位是否会发生循环?如果循环的话,循环长度是多少呢?注意:1.如果n的某个正整数次幂的位数不足k,那么不足的高位看做是0。

2.如果循环长度是L,那么说明对于任意的正整数a,n的a次幂和a + L次幂的最后k位都相同。

【输入文件】输入文件circle.in只有一行,包含两个整数n(1≤n< 10100)和k(1≤k≤100),n和k之间用一个空格隔开,表示要求n的正整数次幂的最后k位的循环长度。

【输出文件】输出文件circle.out包括一行,这一行只包含一个整数,表示循环长度。

如果循环不存在,输出-1。

【样例输入】32 2【样例输出】4【数据规模】对于30%的数据,k≤4;对于全部的数据,k≤00。

从个位开始判断:几轮循环后,如果出现1(个位数字的第1次),计算循环长度j,连续自乘幂j次,转(2);如果没有出现1,出现了其它数字,则循环节不存在,输出-1后结束。

(1)依次判断十位……。

(2)每个数字的循环长度纪录在circle数组。

(3)如果能计算至最高位,则circle数组的每1个元素连乘就是要求的n的正整数次幂的最后k位的循环长度。

32的循环长度=4,但程序是先判断个位成立后sc:=ss;ij:=b[a[j,i]];circLe[i]:=j-1;{循环长度=幂次方-1,并记录在circle数组里,circle[1]=5-1=4}for ij:=2 to j-1 do muLti(ss,sc,ss);{初值ss=32,经过ss自乘3次=104876,在十位乘1次=33554432, circle[2]=1}circle[1] *circle[2]=4*1=4const max=100;type hint=array[0..max]of Longint;var st,s1,s2:string; k,ok:Longint;a:array[1..11]of hint;{某1位的循环长度一定<11,在第11次乘幂不能出现初始值,则循环不成立} b:array[0..9]of Longint;circLe:array[0..max]of Longint;tot:hint;n,start:hint; sc,ss:hint;i,j,ij,L,m:Longint;procedure muLti(var a:hint;b,c:hint);var i,j,e:Longint;beginfiLLchar(a,sizeof(a),0);for i:=0 to k-1 dofor j:=0 to k-1 doif i+j<=k-1 then inc(a[i+j],b[i]*c[j]);e:=0;for i:=0 to k-1 do begina[i]:=a[i]+e;e:=a[i] div 10;a[i]:=a[i] mod 10;end;end;procedure muLt(var a:hint; b:Longint);var i,e:Longint;beginfor i:=0 to a[max] do a[i]:=a[i]*b;e:=0;for i:=0 to a[max]+1 do begina[i]:=a[i]+e;e:=a[i] div 10;a[i]:=a[i] mod 10;end;if a[a[max]+1]>0 then a[max]:=a[max]+1;end;beginassign(input,'circLe.in'); reset(input);assign(output,'circLe.out'); rewrite(output);readLn(st);s1:=copy(st,1,pos(' ',st)-1); deLete(st,1,pos(' ',st)); s2:=st;{ s1= st的第一个至空格前所有字符,赋值后,删除st的第一个至空格所有字符,s2= st空格后所有字符}deLete(st,1,pos(' ',st)-1);s2:=st; whiLe pos(' ',s2)>0 do deLete(s2,pos(' ',s2),1);{赋值后,删除st的第一个至第一个空格所有字符,s2= st空格后所有字符,可能存在连续空格}vaL(s2,k,ok); {字符型S2转换为数值型K}s2:=copy(s1,Length(s1)-k+1,k); {S1后长度k-1位赋值给S2}whiLe Length(s2)<k do s2:='0'+s2; {如果n的某个正整数次幂的位数不足k,那么不足的高位看做是0}for i:=1 to k do n[k-i]:=ord(s2[i])-48; {S1后长度k-1位转换为数值型n[k-i]}n[max]:=k-1; {求字符型S2长度}start:=n; ss:=n; a[1]:=n; {n,ss,start都是一维数组hint, a是二维数组,直接赋值一行数据 a[1]是个一维数组}for i:=0 to k-1 dobegin {b:array[0..9]of Longint}fiLLchar(b,sizeof(b),0); b[a[1,i]]:=1; {第i位数字第1次出现,假设b[a[1,i]]=b[9]=1,表示第i位数字第1次是9} j:=2; {循环长度的初值=2}whiLe true do beginmuLti(a[j],a[j-1],ss); {ss=n,a[j-1]=a[1]=n,自乘}if b[a[j,i]]=0{a:array[1..11,0..100] of longint,共0..9,乘11次一定会出现重复数字,但不能确定是第1次的值,如果第j次乘幂后,这个数字是首次出现(多数情况是这样), b[a[j,i]]=b[任何1个没有出现的数字]=j, 表示第i位数字第j次出现的}then begin b[a[j,i]]:=j; inc(j); endeLse beginsc:=ss; ij:=b[a[j,i]];if ij<>1{某一位数值出现了循环,但不是初始值,则这个循环节不是所求的,中断整个程序,一般不会出现在个位}then begin writeLn(-1); cLose(input); cLose(output); haLt;end;circLe[i]:=j-1;{循环长度=幂次方-1,并记录在circle数组里}for ij:=2 to j-1 do muLti(ss,sc,ss); {改变了SS,使SS是初始的(j-1)-2+1次幂}j:=2; break; {退出whiLe循环,检测下1位的循环长度}end;end;end;fiLLchar(tot,sizeof(tot),0); tot[0]:=1;for i:=1 to k do muLt(tot,circLe[i-1]);for i:=k-1 downto 0 do if tot[i]>0 then break;for j:=i downto 0 do write(tot[j]);cLose(input); cLose(output);end.。

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

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,输出反弹高度和经过路程,结果保留两位小数。

NOIP2005提高组复赛第二题_过河分析

NOIP2005提高组复赛第二题_过河分析

过河【问题描述】在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。

在桥上有一些石子,青蛙很讨厌踩在这些石子上。

由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,……,L (其中L 是桥的长度)。

坐标为0的点表示桥的起点,坐标为L 的点表示桥的终点。

青蛙从桥的起点开始,不停的向终点方向跳跃。

一次跳跃的距离是S 到T 之间的任意正整数(包括S,T )。

当青蛙跳到或跳过坐标为L 的点时,就算青蛙已经跳出了独木桥。

题目给出独木桥的长度L ,青蛙跳跃的距离范围S,T ,桥上石子的位置。

你的任务是确定青蛙要想过河,最少需要踩到的石子数。

【输入文件】输入文件river.in 的第一行有一个正整数L (1 ≤ L ≤ 109),表示独木桥的长度。

第二行有三个正整数S ,T ,M ,分别表示青蛙一次跳跃的最小距离,最大距离,及桥上石子的个数,其中1≤S≤T≤10,1≤M≤ 100。

第三行有M 个不同的正整数分别表示这M 个石子在数轴上的位置(数据保证桥的起点和终点处没有石子)。

所有相邻的整数之间用一个空格隔开。

【输出文件】输出文件river.out 只包括一个整数,表示青蛙过河最少需要踩到的石子数。

方法1:搜索•直叙式搜索不行:搜索桥有困难(桥的长度1..109);搜索石子更困难,(石头的分布是没有任何规律)•优化:以桥的长度为对象搜索+巧妙的剪枝•分析:从桥的一侧到另一侧,中间最多只有100个石子。

假设桥长为最大值(109),石头数也为最大值(100),则中间一定会有很多“空长条” (两个石子中的空地),关键是如何在处理时把这些“空长条”跳过,使得运算次数降到M 次。

先求出青蛙可能跳到的所有位置,然后就可以在忽略“空长条”的前提下,计算青蛙过河最少需要踩到的石子数了。

算法的时间复杂度为O(m2)方法2、动态规划设opt[n]为青蛙到达n 位置最少需要踩到的石子数。

1995-2008 历届NOIP试题及详解

1995-2008 历届NOIP试题及详解
② 由编码求原数组:共 15 分(5%+5%+5%)
a 输入:N=5 B=(0,0,0,0,0)
输出: A=(4,3,2,1,0)
b 输入:N=10 B=(0,1,2,3,4,5,6,7,8,9)
输出: A=(0,1,2,3,4,5,6,7,8,9)
c 输入:N=7 B=(0,0,0,0,4,5,6)
R
Y Y
P2=B R N2R=2
Y
P3=Y R N3=R1
Y
Q
RR
Y
排列方案: 排列总数: 105×2=210
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y
RRR
BB
Y BB
① 输10入5×2=210 3 4R 4 R4 4R 3 4 B B
1 2R 2 R2 2R 2 1 3B B
应打印出完整的图形R:(R12 分R)
BB
15 1R6 1R6 1R5 4 B B
Y Y Y Y Y
7 8 R 8R 8 R 7 7
BB
Y
3 4 R4 R4 R4 3 4 B B
Y
1 2 2R 2 R 2 R 2 1
19 18 17 16 15 14 13 12 11 10 <3> 本题 14 分

NOIP2005第十一届全国青少年信息学奥林匹克联赛复赛试题普及组

NOIP2005第十一届全国青少年信息学奥林匹克联赛复赛试题普及组

2005年第十一届NOIP复赛试题(普及组)一、陶陶摘苹果( apple.pas/c/cpp)【问题描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。

苹果成熟的时候,陶陶就会跑去摘苹果。

陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。

现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。

假设她碰到苹果,苹果就会掉下来。

【输入文件】输入文件apple.in包括两行数据。

第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。

第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。

【输出文件】输出文件apple.out包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

【样例输入】100 200 150 140 129 134 167 198 200 111110【样例输出】5二、校门外的树(tree.pas/c/cpp)【问题描述】某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。

我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。

由于马路上有一些区域要用来建地铁。

这些区域用它们在数轴上的起始点和终止点表示。

已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。

现在要把这些区域中的树(包括区域端点处的两棵树)移走。

你的任务是计算将这些树都移走后,马路上还有多少棵树。

【输入文件】输入文件tree.in的第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。

NOIP历年复赛提高组试题(2004-2013)

NOIP历年复赛提高组试题(2004-2013)

第十届全国信息学奥林匹克分区联赛(NOIP2004)复赛试题(提高组竞赛用时:3小时)1、津津的储蓄计划(Save.pas/dpr/c/cpp)【问题描述】津津的零花钱一直都是自己管理。

每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。

为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。

因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。

例如11月初津津手中还有83元,妈妈给了津津300元。

津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。

到了11月月末,津津手中会剩下3元钱。

津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。

有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。

如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。

现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。

如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

【输入文件】输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。

【输出文件】输出文件save.out包括一行,这一行只包含一个整数。

如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。

【样例输入1】29023028020030017034050908020060【样例输出1】-7【样例输入2】29023028020030017033050908020060【样例输出2】1580【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。

NOIP历年复赛提高组试题

NOIP历年复赛提高组试题

全国信息学奥林匹克分区联赛(NOIP)复赛提高组试题第一届全国信息学奥林匹克分区联赛(NOIP1995)复赛试题(提高组竞赛用时:3.5小时)1、编码问题设有一个数组A:ARRAY[0..N-1]OFINTEGER;数组中存放的元素为0~N-1之间的整数,且A[i]≠A[j](当i≠j时)。

例如:N=6时,有:A=(4,3,0,5,1,2)此时,数组A的编码定义如下:A[0]的编码为0;A[i]的编码为:在A[0],A[1],…,A[i-1]中比A[i]的值小的个数(i=1,2,…,N-1)∴上面数组A的编码为:B=(0,0,0,3,1,2)程序要求解决以下问题:①给出数组A后,求出其编码。

②给出数组A的编码后,求出A中的原数据。

2、灯的排列问题设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,……N k(k表示不同颜色灯的个数)。

放灯时要遵守下列规则:①同一种颜色的灯不能分开;②不同颜色的灯之间至少要有一个空位置。

例如:N=8(格子数);R=2(红灯数);B=3(蓝灯数),放置的方法有:R-B顺序B-R顺序放置的方法总数为12种。

数据输入的方式为:NP1(颜色,为一个字母)N1(灯的数量)P2 N2……Q(结束标记,Q本身不是灯的颜色)程序要求:求出一种顺序的放置(排列)方案及放置(排列)方案总数。

3、积木块上的数字设有一个四层的积木块,1~4层积木块的数量依次为:5,6,7,8,如下图所示放置:其中,给出第三层与第四层所标示的数字,并已知第三层的数据是由第四层的数据计算出来的。

计算的方法是:第三层的某个数据A是由第四层相邻的两个数据B,C经过某种计算后产生的:计算所用到的计算符为:+,-,⨯,且无优先级之分(自左向右计算),运算符最多为2个。

如:3+4⨯5=35 5⨯4+3=23可以看出,上图中的第三层的数据是由第四层的数据用以下计算公式计算出来的:A=B⨯C+B也就是:8=2⨯3+2,15=3⨯4+3,……14=2⨯6+2程序要求:给出第四层与第三层的数据后,将第一、二层的每块积木标上相应的数据,并输出整个完整的积木图及计算公式。

全国信息学奥林匹克竞赛NOIP试题汇总

全国信息学奥林匹克竞赛NOIP试题汇总
【输入文件】
输入文件tree.in的第一行有两个整数L(1 <=L<= 10000)和M(1 <=M<= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。
例如上例,只有一种的和为素数:3+7+19=29)。
[输入]:
键盘输入,格式为:
n
x1,x2

屏幕输出,格式为:
一个整数(满足条件的种数)。
[输入输出样例]:
输入:
4 3
3 7 12 19
输出:
1
[问题描述]:
给出一个整数n(口<10八30)和k个变换规则(k<=15)。规则:
一位数可变换成另一个一位数:
[输入输出样例]:
输入:
6 6 3 2
输出:
17
2005年第十一届NOIP复赛试题(提高组)
发布日期
谁拿了最多奖学金
(scholar.pas/c/cpp)
【问题描述】
某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获 取的条件各自不同:
1)院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在 本学期内发表1篇或1篇以上论文的学生均可获得;
输入中的表达式的长度都不超过50个字符,而且保证选项中总有表达式和题干 中的表达式是等价的。
【输出文件】
输出文件equal.out包括一行,这一行包括一系列选项的标号,表示哪些选项是和 题干中的表达式等价的。选项的标号按照字母顺序排列,而且之间没有空格。
【样例输入】
(
3
(a-1)A2+4*a
a + 1+ a
a
【样例输出】

NOIP历年复赛提高组试题(2004-2013)

NOIP历年复赛提高组试题(2004-2013)

NOIP历年复赛提高组试题(2004-2013)第十届全国信息学奥林匹克分区联赛(NOIP2004)复赛试题(提高组竞赛用时:3小时)1、津津的储蓄计划(Save.pas/dpr/c/cpp)【问题描述】津津的零花钱一直都是自己管理。

每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。

为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。

因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。

例如11月初津津手中还有83元,妈妈给了津津300元。

津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。

到了11月月末,津津手中会剩下3元钱。

津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。

有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱,不够这个月的原定预算。

如果出现这种情况,津津将不得不在这个月省吃俭用,压缩预算。

现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。

如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。

【输入文件】输入文件save.in包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。

【输出文件】输出文件save.out包括一行,这一行只包含一个整数。

如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。

【样例输入1】290230908020060【样例输出2】15802、合并果子(fruit.pas/dpr/c/cpp)【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。

NOIP复赛普及组试题

NOIP复赛普及组试题

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

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

3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,,内存4G,上述时限以此配置为准。

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

5、提交的程序代码文件的放置位置请参照各省的具体要求。

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

1. 成绩c/pas)【问题描述】牛牛最近学习了C++入门课程,这门课程的总成绩计算方法是:总成绩=作业成绩×20%+小测成绩×30%+期末考试成绩×50%牛牛想知道,这门课程自己最终能得到多少分。

【输入格式】输入文件名为。

输入文件只有1 行,包含三个非负整数A、B、C,分别表示牛牛的作业成绩、小测成绩和期末考试成绩。

相邻两个数之间用一个空格隔开,三项成绩满分都是100 分。

【输出格式】输出文件名为。

输出文件只有1 行,包含一个整数,即牛牛这门课程的总成绩,满分也是100 分。

【输入输出样例1】【输入输出样例1 说明】牛牛的作业成绩是100分,小测成绩是100分,期末考试成绩是80分,总成绩是100×20%+100×30%+80×50%=20+30+40=90。

【输入输出样例2】【输入输出样例2 说明】牛牛的作业成绩是60分,小测成绩是90分,期末考试成绩是80分,总成绩是60×20%+90×30%+80×50%=12+27+40=79。

【数据说明】对于30%的数据,A=B=0。

对于另外30%的数据,A=B=100。

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

传统
传统
传统
二.提交源程序文件名
对于 C++语言 apple.cpp
对于 C 语言
apple.c
对于 pascal 语言 apple.pas
tree.cpp tree.c
tree.pas
medic.cpp medic.c medic.pas
circle.cpp circle.c
circle.pas
三.编译命令(不包含任何优化开关) 对于 C++语言 g++ -o apple g++ -o tree
【输出文件】
输出文件 medic.out 包括一行,这一行只包含一个整数,表示在规定的时间 内,可以采到的草药的最大总价值。
【样例输入】
70 3 71 100 69 1 12
【样例输出】
3 【数据规模】
对于 30%的数据,M <= 10; 对于全部的数据,M <= 100。
4、循环
(circle.pas/c/cpp)
如果你是辰辰,你能完成这个任务吗?
【输入文件】
输入文件 medic.in 的第一行有两个整数 T(1 <= T <= 1000)和 M(1 <= M <= 100),用一个空格隔开,T 代表总共能够用来采药的时间,M 代表山洞里的 草药的数目。接下来的 M 行每行包括两个在 1 到 100 之间(包括 1 和 100)的整 数,分别表示采摘某株草药的时间和这株草药的价值。
CCF 全国信息学奥林匹克联赛(NOIP2012)复赛
普及组
(请选手务必仔细阅读本页内容)
一.题目概况 中文题目名称
英文题目与子目录名 可执行文件名 输入文件名 输出文件名 每个测试点时限 测试点数目 每个测试点分值 附加样例文件 结果比较方式 题目类型
淘淘摘苹果 校门外的树
采药
循环
apple apple apple.in
【输出文件】
输出文件 tree.out 包括一行,这一行只包含一个整数,表示马路上剩余的 树的数目。
【样例输入】
500 3 150 300 100 200 470 471
【样例输出】
298
【数据规模】
对于 20%的数据,区域之间没有重合的部分; 对于其它的数据,区域之间有重合的情况。
3、采药
(medic.pas/c/cpp)
现在已知 10 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最 大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会 掉下来。
【输入文件】
输入文件 apple.in 包括两行数据。第一行包含 10 个 100 到 200 之间(包括 100 和 200)的整数(以厘米为单位)分别表示 10 个苹果到地面的高度,两个相 邻的整数之间用一个空格隔开。第二行只包括一个 100 到 120 之间(包含 100 和 120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高 度。
数次幂最后一位数也有类似的循环现象:
循环
循环长度
2
2、4、8、6
4
3
3、9、7、1
4
4
4、6
2
5
5
1
6
6
1
7
7、9、3、1
4
8
8、4、2、6
4
9
9、1
2
这时乐乐的问题就出来了:是不是只有最后一位才有这样的循环呢?对于一
个整数 n 的正整数次幂来说,它的后 k 位是否会发生循环?如果循环的话,循环
长度是多少呢?
注意:
1. 如果 n 的某个正整数次幂的位数不足 k,那么不足的高位看做是 0。
2. 如果循环长度是 L,那么说明对于任意的正整数 a,n 的 a 次幂和 a + L
次幂的最后 k 位都相同。
【输入文件】
输入文件 circle.in 只有一行,包含两个整数 n(1 <= n < 10100)和 k(1 <= k <= 100),n 和 k 之间用一个空格隔开,表示要求 n 的正整数次幂的最后 k 位 的循环长度。
【问题描述】
乐乐是一个聪明而又勤奋好学的孩子。他总喜欢探求事物的规律。一天,他
突然对数的正整数次幂产生了兴趣。
众所周知,2 的正整数次幂最后一位数总是不断的在重复 2,4,8,6,2,4,
8,6„„我们说 2 的正整数次幂最后一位的循环长度是 4(实际上 4 的倍数都可
以说是循环长度,但我们只考虑最小的循环长度)。类似的,其余的数字的正整
述时限以此配置为准。 4、特别提醒:评测在 NOI Linux 下进
1、陶陶摘苹果
(apple.pas/c/cpp)
【问题描述】
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10 个苹果。苹果成 熟的时候,陶陶就会跑去摘苹果。陶陶有个 30 厘米高的板凳,当她不能直接用 手摘到苹果的时候,就会踩到板凳上再试试。
g++ -o circle circle.cpp -lm gcc -o circle
circle.c -lm fpc circle.pas
128M
128M
1、文件名(程序名和输入输出文件名)必须使用英文小写。 2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值 必须是 0。 3、全国统一评测时采用的机器配置为:CPU Intel Core2 Quad Q8200 2.33GHz,内存 2G,上
apple.cpp -lm tree.cpp -lm 对于 C 语言 gcc -o apple gcc -o tree
apple.c -lm tree.c -lm 对于 pascal 语言 fpc apple.pas fpc tree.pas
四.运行内存限制 内存上限
128M
128M
注意事项:
g++ -o medic medic.cpp -lm gcc-o medic medic.c -lm fpc medic.pas
【输出文件】
输出文件 apple.out 包括一行,这一行只包含一个整数,表示陶陶能够摘到 的苹果的数目。
【样例输入】
100 200 150 140 129 134 167 198 200 111 110
【样例输出】
5
2、校门外的树
(tree.pas/c/cpp)
【问题描述】
某校大门外长度为 L 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 L 的位置;数轴上的每个整数点,即 0,1,2,„„,L,都种有一棵树。
tree tree tree.in
medic medic medic.in
circle circle circle.in
apple.out 1秒 10
tree.out 1秒 10
medic.out 1秒 10
circle.out 1秒 10
10 有
传统
10
10
10



全文比较(过滤行末空格及文末回车)
【输出文件】 输出文件 circle.out 包括一行,这一行只包含一个整数,表示循环长度。
如果循环不存在,输出-1。 【样例输入】 32 2 【样例输出】 4 【数据规模】 对于 30%的数据,k <= 4;
对于全部的数据,k <= 100。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和 终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有 重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的 任务是计算将这些树都移走后,马路上还有多少棵树。
【输入文件】
输入文件 tree.in 的第一行有两个整数 L(1 <= L <= 10000)和 M(1 <= M <= 100),L 代表马路的长度,M 代表区域的数目,L 和 M 之间用一个空格隔开。 接下来的 M 行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始 点是成为世界上最伟大的医师。为此,他 想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医 师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同 的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时 间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可 以让采到的草药的总价值最大。”
相关文档
最新文档