青少年中学生信息学奥林匹克竞赛试题精选33题附题解答案

合集下载

全国青少年信息学奥林匹克联赛培训习题与解答(附程序解析主要是动态规划).pdf

全国青少年信息学奥林匹克联赛培训习题与解答(附程序解析主要是动态规划).pdf

例13-4迷宫寻宝【问题描述】一个n行m列的迷宫(1<=n,m<=5),入口在左上角,规定只能向下或向右走。

迷宫的某些地方藏有不同价值(>0)的宝藏,同时又存在一些障碍无法通过。

求到达右下角出口时收集宝藏的最大值。

【输入】第一行n和m一下n行m列描述迷宫矩阵a[I,j](-1:障碍);最大值【样例输入】342-150513-16-18910【样例输出】33【分析】A[I,j]保存第i行第j列的宝藏价值。

令f[I,j]为从(1,1)走到第i行第j列时所能收集的宝藏的最大价值。

状态转移方程:F[I,j]=max{f[I-1,j],f[I,j-1]}+a[I,j](i<=n,1<=m)条件:n[I,j]<>-1初始:f[1,1]=a[1,1]目标:f[n,m]【参考程序】Const maxn=50;maxm=50;Fin=’b1.in’;Fout=’b1.out’;VarF,a:array[0..maxn+1,0..maxm+1]of integer;I,j,k,n,m,t:integer;Procedure init;BeginAssign(input,fin);Reset(input);Readln(n,m);For i:=0to n+1doFor j:=0to m+1do a[I,j]:=-1;A[0,1]:=0;For i:=1to n doFor j:=1to m doBeginRead(a[I,j]);If(a[I,j-1]=-1)and(a[i-1,j]=-1)then a[I,j]:=-1;//很关键的预处理End;Close(input);End;Function max(a,b:integer):integer;Begin max:=a;if b>a then max:=b;end;Procedure work;BeginFillchar(f,sizeof(f),0);For i:=1to n doFor j:=1to m doIf a[I,j]<>-1Then f[I,j]:=max(f[i-1,j],f[I,j-1])+a[I,j];End;Procedure print;BeginAssign(output,fout);Rewrite(output);Writeln(f[n,m]);Close(output);End;BeginInit;Work;Print;End.13-5花店橱窗布置(IOI1999)【问题描述】假设你想以最美观的方式布置花店的橱窗。

青少年信息学奥林匹克竞赛试题与解析

青少年信息学奥林匹克竞赛试题与解析

青少年信息学奥林匹克竞赛试题与解析一、选择题(每题3分,共30分)以下关于二进制数的描述,哪一项是错误的?A. 二进制数只有0和1两个数字B. 二进制数的每一位称为比特(bit)C. 二进制数可以直接在计算机中存储和运算D. 二进制数的每一位都代表一个十进制的2的幂次方下列哪个算法的时间复杂度是O(n^2)?A. 冒泡排序B. 选择排序C. 插入排序D. 快速排序(在平均和最坏情况下)在关系型数据库中,以下哪个术语用于描述表与表之间的关系?A. 实体B. 属性C. 关键字D. 外键以下哪项不是计算机网络的基本功能?A. 数据通信B. 资源共享C. 分布式处理D. 数据加密以下哪个算法用于查找无序列表中的元素?A. 二分查找B. 顺序查找C. 插入排序D. 快速排序在面向对象编程中,以下哪个术语用于描述对象的行为?A. 属性B. 方法C. 继承D. 封装以下哪个协议用于在互联网上传输电子邮件?A. FTPB. SMTPC. HTTPD. DNS以下哪个数据结构适用于实现栈?A. 数组B. 链表C. 哈希表D. 二叉树以下哪个术语用于描述计算机程序的指令集合?A. 代码B. 程序C. 算法D. 数据结构以下哪个术语用于描述计算机网络中数据传输的速率?A. 带宽B. 延迟C. 吞吐量D. 丢包率二、填空题(每题4分,共16分)在计算机科学中,__________ 是一种特殊类型的循环,其中循环的每次迭代都依赖于前一次迭代的结果。

在关系型数据库中,__________ 是用于唯一标识表中每一行数据的字段或字段组合。

在计算机网络中,__________ 是指从一个节点发送数据到另一个节点所需的总时间。

在面向对象编程中,__________ 是一种机制,允许一个类继承另一个类的属性和方法。

三、简答题(每题12分,共24分)描述算法的基本组成部分,并解释它们的作用。

解释计算机网络中的TCP/IP协议栈,并说明各层的主要功能。

第十六届全国青少年信息学奥林匹克联赛初赛试题及答案

第十六届全国青少年信息学奥林匹克联赛初赛试题及答案

第十六届全国青少年信息学奥林匹克联赛初赛试题及答案(提高组)(总12页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--第十六届全国青少年信息学奥林匹克联赛初赛试题(提高组Pascal 语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一.单项选择题(共 10 题,每题 1.5 分,共计 15 分。

每题有且仅有一个正确选项)1.与十六进制数A1. 2等值的十进制数是()。

A.101.2 B. 111.4 C. 161.125 D. 177.252.一个字节(byte)由()个二进制位组成。

A.8B. 16C. 32D. 以上都有可能3.以下逻辑表达式的值恒为真的是()。

A. P∨(﹁P∧Q) ∨(﹁P∧﹁Q)B. Q∨(﹁P∧Q) ∨(P∧﹁Q)C. P∨Q∨(P∧﹁Q) ∨(﹁P∧Q)D. P∨﹁Q∨(P∧﹁Q) ∨(﹁P∧﹁Q)4.Linux下可执行文件的默认扩展名为()。

A. exeB. comC. dllD. 以上都不是5.如果在某个进制下等式7*7=41成立,那么在该进制下等式12*12=( )也成立。

A. 100B. 144C. 164D. 1966.提出“存储程序”的计算机工作原理的是()。

A. 克劳德·香农B. 戈登·摩尔C. 查尔斯·巴比奇D. 冯·诺伊曼7.前缀表达式“+3 * 2 +5 12”的值是()。

A. 23B. 25C. 37D. 658.主存储器的存取速度比中央处理器(CPU)的工作速度慢得多,从而使得后者的效率受到影响。

而根据局部性原理,CPU所访问的存储单元通常都趋于聚集在一个较小的连续区域中。

于是,为了提高系统整体的执行效率,在CPU中引入了()。

A. 寄存器B. 高速缓存C. 闪存D. 外存9.完全二叉树的顺序存储方案,是指将完全二叉树的结点从上至下、从左至右,依次存放到一个顺序结构的数组中。

中学生信息学奥林匹克竞赛初赛命题试题附参考答案

中学生信息学奥林匹克竞赛初赛命题试题附参考答案

信息学命题(十)A 、二进制码B 、八进制码C 、十进制码D 、智能拼音码2、计算机的软件系统通常分为(A 、硬件系统和软件系统 C 、系统软件和应用软件3、关于软盘读写孔,正确的说法是( )。

A .从该孔读信息C.当该孔处于开状态时,不能删除盘中文件。

D .该孔没有作用4、一棵二叉树的中序遍历序列为 DGBAECHF 后序遍历序列为 GDBEHFCA 则前序遍历的序列是()b5E2RGbCAPA 、ABCDFGHEB 、ABDGCEFHC 、ACBGDHEFD 、ACEFHBGD lEanqFDPw5、下列叙述中错误的是()。

A.微型计算机应避免置于强磁场之中B •微型计算机使用时间不宜过长,而应隔几个小时关机一次C.微型计算机应避免频繁关开,以延长其使用寿命D.计算机应经常使用,不宜长期闲置不用6、 计算机网络最主要的优点是( )。

A 、运算速度快B 、共享资源C 、精度高D 、存储容量大7、 下列4个不同进制表示的数中,最大的一个数是( )A 、(220.1)10B 、(11011011.1)2C 、(334.1)8 &为了区分汉字与 ASCII 码,计算机中汉字编码的最高位为( )A 、1B 、0C 、-1D 、2 9、下列正确的文件名是()。

A. comma nd 。

ComB. comma nd_comC. comma nd,comD. comma RTCrpUDGiT10、 .一般来说,TCP/IP 的IP 提供的服务是( A.运输层服务B.会话层服务 C 表示层服务11、 通信时,模拟信号也可以用数字信道来传输, 5PCzVD7HxAA 、D/AB 、A/DC ModemD 、 Codec12、一个栈的输入顺序为 1、 2、 3、4、5,卜列序列中可能是栈的输出序列是()A 、 54312B 、 24135C 、 21543D 、 1253413、属于In ternet 的功能是()A 、聊天B 、远程教育C 、查询资料D 、传送能量14、下列描述计算机病毒的特性中,()是正确的。

第十四届全国青少年信息学奥林匹克联赛初赛试题及答案

第十四届全国青少年信息学奥林匹克联赛初赛试题及答案

第十四届全国青少年信息学奥林匹克联赛初赛试题(普及组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)∧﹁DC.(B∨C∨D) ∧D∧A D.A∧(D∨﹁C)∧B3.在下列关于图灵奖的说法中,不正确的是()。

A.图灵奖是美国计算机协会于1966年设立的,专门奖励那些对计算机事业作出重要贡献的个人B.图灵奖有“计算机界诺贝尔奖”之称C.迄今为止,还没有华裔计算机科学家获此殊荣D.图灵奖的名称取自计算机科学的先驱、英国科学家阿兰•图灵4.计算机在工作过程中,若突然停电,()中的信息不会丢失。

A.ROM 和RAM B.CPU C.ROM D.RAM5.完全二叉树共有2*N-1个结点,则它的叶节点数是()。

A.N-1 B.N C.2*N D.2N-16.在以下各项中,( )不是操作系统软件。

A.Solaris B.Linux C.Windows Vista D.Sybase7.设栈S的初始状态为空,元素a,b,c,d,e,f依次入栈S,出栈的序列为b,d,f,e,c,a,则栈S的容量至少应该是()。

A.6 B.5 C.4 D.38.与十进制数28.5625相等的四进制数是()。

A.123.21 B.131.22 C.130.22 D.130.219.设字符串S=”Olympic”,S的非字串的数目是()。

A.28 B.29 C.16 D.1710.Web2.0 是近年来互联网的热门概念之一,其核心思想是互动与分享。

全国青少年信息学奥林匹克联赛培训习题与解答

全国青少年信息学奥林匹克联赛培训习题与解答

全国青少年信息学奥林匹克联赛培训习题与解答第一章计算机基础知识1、我国先后自行研制成功“银河”系列的巨型计算机,其中:“银河”于1983年问世,其运算速度为每秒 1亿次;―银河Ⅱ‖于1992年诞生,其运算速度为每秒 10亿次;“银河Ⅲ”于1997年通过国家鉴定,其运算速度为每秒130亿次。

2、计算机的特点:运算速度快、计算精度高,可靠性好、有记忆和逻辑判断能力、有自动0程序的能力、可处理各种类型的数据与信息。

3、计算机应用于:数字计算、信息处理、辅助设计(CAD)和辅助教学(CAI)、工业控制、多媒体应用、网络技术。

4、下列软件均属于操作系统的是:B (因为WPS、WORD、FOXBASE是应用软件)(A)WPS与PC DOS (B)WINDOWS与MS DOS(C)WORD与WINDOWS (C)FOXBASE与OS/25、操作系统是重要的系统软件,下面几个软件中不属于操作系统的是 C(A)MS-DOS (B)UCDOS (C)PASCAL (D)WINDOWS956、MS-DOS系统对磁盘信息进行管理和使用是以A 为单位的。

【对磁盘信息的存取必须以访问文件方式进行】(A)文件(B)盘片(C)字节(D)命令7、在计算机内部用来传送、存贮、加工处理的数据或指令(命令)都是以C 形式进行的【计算机内部无论是数据还是命令都需要转换成二进制码才能传送、存贮、加工处理】(A)十进制码(B)智能拼音码(C)二进制码(D)五笔字型码8、微机内的存储器的地址是以( B )编址的。

【字长表示一个存储单元由多少位数组成,八位机的一个字长是1B,十六位机的一个字长是2B,字长位越多,可访问的存储器的地址也越多】(A)二进制位(B)字长(C)字节(D)微处理器的型号9、下列诸因素中,对微机工作影响最小的是( B )(A)尘土(B)噪声(C)温度(D)湿度10、在24*24点阵的字库中,汉字“一”与“编”的字模占用字节数分别是( C )(A)32、32 (B)32、72 (C)72、72 (D)72、32【在汉字编码中,字模汉字占用字节数与笔画的多少无关,因每行24点需要3B存储空间,24行共需要72B存储空间】11、将DOS系统盘插入A驱动器启动机器,随后使用一批应用软件,在此过程中,DOS系统盘(C)(A)必须始终插入在A驱动器中(B)不必再用(C)可能有时要插入A驱动器中(D)可能有时要插入B驱动器中【因机器启动成功后,常用命令常驻内存中,当需要调用操作系统中的外部命令时,需要再次再次插入A盘】12、计算机能直接执行的指令包括两部分,它们是(B)(A)源操作数与目标操作数(B)操作码与操作数(C)ASCII码与汉字代码(D)数字与字符【因计算机指令系统由操作码和操作数组成】13、在微机中,通用寄存器的位数是( C )(A)8位(B)16位(C)计算机字长(D)32位【因微机寄存器的位数与机器有关,取决于计算机字长】14、在计算机中,ASCII码是( B )位二进制代码(A)8 (B)7 (C)12 (D)16【表示27个状态,用128个不同的二进制编码来表示控制符号、十进制数、字符、大小写英文字母,最高位设置为0】15、计算机的软件系统通常分为( A )(A)系统软件与应用软件(B)高级软件与一般软件(C)军用软件与民用软件(D)管理软件与控制软件16、启动计算机引导DOS是将操作系统( D )(A)从磁盘调入中央处理器(B)从内存储器调入高速缓冲存储器(C)从软盘调入硬盘(D)从系统盘调入内存储器17、不同的计算机,其指令系统也不相同,这主要取决于( C )(A)所用的操作系统(B)系统的总体结构(C)所用的CPU (D)所用程序设计语言【CPU包括运算器、控制器,所有的控制和运算操作,均由控制器中的微指令进行操作。

全国青少年信息学奥林匹克竞赛(高中组)初赛试题及答案

全国青少年信息学奥林匹克竞赛(高中组)初赛试题及答案

NOI’95 “同创杯”全国青少年信息学(计算机)奥林匹克竞赛分区联赛初赛试题(高中组)竞赛用时:2小时一、基础题:<1> 执行①C>DIR 命令后,屏幕上显示如下画面:FORMAT COM 12145SYS COM 4878PUC BAT 126XCOPY EXE 112164 FILE(S)123456 bytes free接着又顺序执行了如下几条DOS 命令:②C>DIR> DF.TXT //表示将列表显示的目录作为文件写盘//③C>TYPE DF.TXT④C>DIR试问:执行命令③和④在屏幕上显示的结果是否与①相同?<2> 列举一个问题,使问题的解能对应相应的算法。

例如对算法:X:=10;Y:=5;READ(M,N);S:=X*M-Y*N;可列举出如下的问题:学生答题,答对一题可得10分,答错一题则要扣去5分,输入答对的题数(M)与答错的题数(N),求最后得分(S)是多少?现有以下算法:K:=0 ;FOR I:=0 TO 10 DOK:=K+(50-I*5)DIV 2+1请列出一个相应的问题。

<3> 有标号为A、B、C、D和1、2、3、4的8个球,每两个球装一盒,分装4盒。

标号为字母的球与标号为数字的球有着某种一一对应的关系(称为匹配),并已知如下条件:①匹配的两个球不能在一个盒子内。

②2号匹配的球与1号球在一个盒子里。

③A号和2号球在一个盒子里。

④B匹配的球和C号球在一个盒子里。

⑤3号匹配的球与A号匹配的球在一个盒子里。

⑥4号是A或B号球的匹配球。

⑦D号与1号或2号球匹配。

请写出这四对球匹配的情况。

<4> 从入口(1)到出口(17)的可行路线图中,数字标号表示关卡:现将上面的路线图,按记录结构存储如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18请设计一种能从存储数据中求出从入口到出口经过最少关卡路径的算法。

信息学奥赛考试题型及答案

信息学奥赛考试题型及答案

信息学奥赛考试题型及答案一、选择题1. 在计算机科学中,以下哪个选项不是数据结构的基本类型?A. 线性结构B. 树形结构C. 图形结构D. 量子结构答案:D2. 以下哪种算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C二、填空题1. 在信息学奥赛中,常用的图遍历算法有深度优先搜索(DFS)和______。

答案:广度优先搜索(BFS)2. 哈希表是一种通过______来访问数据的数据结构。

答案:键值对三、简答题1. 描述二分查找算法的基本步骤。

答案:二分查找算法的基本步骤包括:首先确定要查找的元素所在的区间,然后取区间的中间值与目标值进行比较。

如果中间值等于目标值,则查找成功;如果中间值小于目标值,则在区间的右半部分继续查找;如果中间值大于目标值,则在区间的左半部分继续查找。

重复以上步骤,直到找到目标值或区间为空。

2. 解释什么是递归,并给出一个递归算法的例子。

答案:递归是一种在函数中调用自身的编程技巧,用于解决可以分解为相似子问题的问题。

一个递归算法的例子是计算阶乘,即n的阶乘(n!)可以通过递归函数实现:n! = n * (n-1)!,其中基本情况是0! = 1。

四、编程题1. 给定一个整数数组,请编写一个函数,找出数组中第二大的数。

答案:以下是一个可能的解决方案的伪代码:```function findSecondLargest(nums):if length of nums < 2:return nullmax1 = max2 = -∞for num in nums:if num > max1:max2 = max1max1 = numelse if num > max2 and num != max1:max2 = numreturn max2```2. 实现一个函数,判断一个链表是否为回文结构。

答案:以下是一个可能的解决方案的伪代码:```function isPalindrome(head):if head is null or next of head is null:return truefast = slow = headwhile fast and next of fast:fast = next of next of fastslow = next of slowsecondHalf = reverse(slow)while secondHalf:if head.value != secondHalf.value:return falsehead = next of headsecondHalf = next of secondHalfreturn true```注意:以上编程题答案中的伪代码仅供解题思路参考,实际编程语言实现可能有所不同。

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

青少年中学生信息学奥赛试题精选33题(附带题解)第1~10题为基础题,第11~20题为提高题,第21~33为综合题基础题:【1 Prime Frequency】【问题描述】给出一个仅包含字母和数字(0-9, A-Z 以及a-z)的字符串,请您计算频率(字符出现的次数),并仅报告哪些字符的频率是素数。

输入:输入的第一行给出一个整数T( 0<T<201),表示测试用例个数。

后面的T行每行给出一个测试用例:一个字母-数字组成的字符串。

字符串的长度是小于2001的一个正整数。

输出:对输入的每个测试用例输出一行,给出一个输出序列号,然后给出在输入的字符串中频率是素数的字符。

这些字符按字母升序排列。

所谓“字母升序”意谓按ASCII 值升序排列。

如果没有字符的频率是素数,输出“empty”(没有引号)。

试题来源:Bangladesh National Computer Programming Contest在线测试:UVA 10789提示先离线计算出[2‥2200]的素数筛u[]。

然后每输入一个测试串,以ASCLL码为下标统计各字符的频率p[],并按照ASCLL码递增的顺序(0≤i≤299)输出频率为素数的字符(即u[p[i]]=1且ASCLL码值为i的字符)。

若没有频率为素数的字符,则输出失败信息。

【2 Twin Primes】【问题描述】双素数(Twin Primes)是形式为(p, p+2),术语“双素数”由Paul Stäckel (1892-1919)给出,前几个双素数是(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43)。

在本题中请你给出第S对双素数,其中S是输入中给出的整数。

输入:输入小于10001行,每行给出一个整数S (1≤ S≤ 100000),表示双素数对的序列编号。

输入以EOF结束。

输出:对于输入的每一行,输出一行,给出第S对双素数。

输出对的形式为(p1,空格p2),其中“空格”是空格字符(ASCII 32)。

本题设定第100000对的素数小于20000000。

试题来源:Regionals Warmup Contest 2002, Venue: Southeast University, Dhaka, Bangladesh在线测试:UVA 10394提示设双素数对序列为ans[]。

其中ans[i]存储第i对双素数的较小素数(1≤i≤num)。

ans[]的计算方法如下:使用筛选法计算出[2,20000000]的素数筛u[];按递增顺序枚举该区间的每个整数i:若i和i+2为双素数对(u[i]&&u[i+2]),则双素数对序列增加一个元素(ans[++num]=i)。

在离线计算出ans[]的基础上,每输入一个编号s,则代表的双素数对为(ans[s],ans[s]+2)。

【3 Less Prime】【问题描述】设n为一个整数,100≤n≤10000,请找到素数x,x≤ n,使得n-p*x最大,其中p是整数,使得p*x≤n<(p+1)*x。

输入:输入的第一行给出一个整数M,表示测试用例的个数。

每个测试用例一行,给出一个整数N,100≤N≤10000。

输出:对每个测试用例,输出一行,给出满足上述条件的素数。

试题来源:III Local Contest in Murcia 2005在线测试:UVA 10852提示要使得n-p*x 最大(x 为素数,p 为整数,p*x ≤ n<(p+1)*x ),则x 为所有小于n 的素数中,被n 除后余数最大的一个素数。

由此得出算法:先离线计算出[2‥11111]的素数表su[],表长为num 。

然后每输入一个整数n ,则枚举小于n 的所有素数,计算tmp=}][][%{max 1n i su i su n numi <≤≤,满足条件的素数即为对应tmp=n%su[k]的素数su[k]。

【4 Prime Words 】 【问题描述】一个素数是仅有两个约数的数:其本身和数字1。

例如,1, 2, 3, 5, 17, 101和10007是素数。

本题输入一个单词集合,每个单词由a-z 以及A-Z 的字母组成。

每个字母对应一个特定的值,字母a 对应1,字母b 对应2,以此类推,字母z 对应26;同样,字母A 对应27,字母B 对应28,字母Z 对应52。

一个单词的字母的总和是素数,则这个单词是素单词(prime word )。

请编写程序,判定一个单词是否为素单词。

输入:输入给出一个单词集合,每个单词一行,有L 个字母,1≤L ≤20。

输入以EOF 结束。

输出:如果一个单词字母的和为素数,则输出“It is a prime word.”;否则输出“It is not a prime word.”。

试题来源:UFRN-2005 Contest 1 在线测试:UVA 10924提示由于字母对应数字的上限为52,而单词的长度上限为20,因此我们首先使用筛选法,离线计算出[2‥1010]的素数素数筛u[]。

然后每输入一个长度为n 的单词,计算单词字母对应的数字和X=}''..'{'][27''][,}''..'{'][1''][1Z A i s A i s z a i s a i s ni ∈+-∈+-∑=若x 为[2‥1010]中的一个素数(u[x]=1),则表明该单词为素单词;否则该单词非素单词。

【5 Sum of Different Primes 】【问题描述】一个正整数可以以一种或多种方式表示为不同素数的总和。

给出两个正整数n和k,请您计算将n表示为k个不同的素数的和会有几种形式。

如果是相同的素数集,则被认为是相同的。

例如8可以被表示为3 + 5和5 + 3,但不区分。

如果n和k分别为24和3,答案为2,因为有两个总和为24的集合{2, 3, 19}和{2, 5, 17} ,但不存在其他的总和为24的3个素数的集合。

如果n = 24,k= 2,答案是3,因为存在3个集合{5, 19}, {7, 17}以及{11, 13}。

如果n = 2,k = 1,答案是1,因为只有一个集合{2} ,其总和为2。

如果n= 1,k= 1,答案是0,因为1不是素数,不能将{1}计入。

如果n = 4,k = 2,答案是0,因为不存在两个不同素数的集合,总和为4。

请您编写一个程序,对给出的n和k,输出答案。

输入:输入由一系列的测试用例组成,最后以一个空格分开的两个0结束。

每个测试用例一行,给出以一个空格分开的两个正整数n和k。

本题设定n≤ 1120,k≤ 14。

输出:输出由若干行组成,每行对应一个测试用例,一个输出行给出一个非负整数,表示对相应输入中给出的n和k有多少答案。

本题设定答案小于231。

试题来源:ACM Japan 2006在线测试:POJ 3132,ZOJ 2822,UVA 3619提示设su[]为[2..1200]的素数表;f[i][j]为j拆分成i个素数和的方案数(1≤i≤14, su[i]≤j≤1199)。

显然,边界值f[0][0]=1。

首先,采用筛选法计算素数表su[],表长为num。

然后每输入一对n和k,使用动态规划方法计算k个不同素数的和为n的方案总数:枚举su[]表中的每个素数su[i](1≤i≤num)按递减顺序枚举素数个数j(j=14‥1):按递减顺序枚举前j个素数的和p(p=1199‥su[i]):累计su[i]作为第j 个素数的方案总数f[j][p]+=f[j-1][p-su[i]];最后得出的f[k][n]即为问题解。

【6 Common Permutation 】【问题描述】给出两个小写字母的字符串,a 和b ,输出最长的小写字母字符串x 使得存在x 的一个排列,是a 的子序列,同时也存在x 的一个排列是b 的子序列。

输入:输入有若干行。

连续的两行组成一个测试用例,也就是说,第1和第2行构成一个测试用例,第3和第4行构成一个测试用例,等等。

每个测试用例的第一行是字符串a ,第二行是字符串b 。

每个字符串一行,至多由1000个小写字母组成。

输出:对每个测试用例,输出一行,给出x 。

如果有若干个x 满足上述要求,选择按字母序试题来源:World Finals Warm-up Contest, University of Alberta Local Contest 在线测试:UV A 10252提示试题要求按递增顺序输出两串公共字符的排列。

计算方法如下: 设S 1=a 1a 2…a l a ,S 2= b 1b 2…b l b 。

先分别统计S 1中各字母的频率c 1[i]和S 2中各字母的频率c 2[i](1≤i ≤26,其中字母‘a’对应数字1, 字母‘b’对应数字2,…,字母‘z’对应数字26)。

然后计算S 1和S 2的公共字符的排列:递增枚举i(1≤i ≤26),若i 对应的字母在S 1和S 2中同时存在((c1[i]≠0)&&(c2[i]≠0)),则字母'a'+i 在排列中出现k=min{c1[i],c2[i]}次。

【7 Anagram 】【问题描述】给出一个字母的集合,请您编写一个程序,产生从这个集合能构成的所有可能的单词。

例如:给出单词"abc",您的程序产生这三个字母的所有不同的组合——输出单词"abc","acb", "bac", "bca", "cab" 和"cba"。

程序从输入中获取一个单词,其中的一些字母会出现一次以上。

对一个给出的单词,程序产生相同的单词只能一次,而且这些单词按字母升序排列。

输入:输入给出若干单词。

第一行给出单词数,然后每行给出一个单词。

一个单词是由A到Z 的大写或小写字母组成。

大写字母和小写字母被认为是不同的,每个单词的长度小于13。

输出:对输入中的每个单词,输出这个单词的字母产生的所有不同的单词。

输出的单词按字母试题来源:ACM Southwestern European Regional Contest 1995在线测试:POJ 1256,UVA 195提示建立字母与整数间的对应关系:字母‘a’对应0,字母‘A’对应1;…;字母‘z’对应50,字母‘Z’对应51。

为了按照字母升序的要求生成单词的所有排列,首先将单词的所有字母转化为数字,然后递增排序数串,排列中每个位置的数字按由左而右顺序从数串中选择。

相关文档
最新文档