NOIP2014复赛提高组模拟试题
- 格式:doc
- 大小:174.50 KB
- 文档页数:5
1. 观察下表,依据表格中数据排列的规律,请编程求出正整数n在表中出现的次数。
样例:输入:4 输出:3 输入8 输出 42. 编程班即将上课,为了能让每个同学都能拿到教材,老师让star去发教材,由于star比较内向,见到不认识的新同学你会害羞得什么话也不和他说,什么事情也不对他做,当然更不可能发书给他了。
怎么办呢?老师的任务不能不完成啊!当然,遇到star认识的同学star还是很乐意交流的,于是star会要求他认识的同学继续帮他发书(不管对方认不认识他),star害羞的情绪也影响了其他所有同学,于是其他同学也只会发书给他认识的人。
最后star要统计还有哪些同学没有拿到书,他就只能硬着头皮,顶着极大地心理压力给他们发书(老师的任务一定要完成啊)所有的学生都用学号来表示。
Input 第1行:三个数k,n,m(k代表你的学号,n代表人数,m代表关系数n(n<250)和m(m<10000) 。
第2..m+1行: 每行两个数a和b代表a认识b,(不代表b认识a)同一行的a,b不会相同Output 第1行: 所有没有拿到教材的同学的学号,学号从小到大排列。
如果所有同学都能拿到书,那么输出0Sample Input :1 4 6↙1 2↙2 3↙4 1↙3 1↙1 3↙2 3 Sample Output:4输出说明: 只有一个同学,4号学生没有拿到书3. 集合找数:集合A中的元素有以下特征:(1)数1是A中的元素;(2)如果X是A中的元素,则2X+1,3X+1也是A中的元素;(3)除了条件(1),(2)以外的所有元素均不是A中的元素;给定数N,请求出集合中的第N个元素。
例如N=500,A500=3351,N=10000,A10000=1576534. 学生在我们USACO的竞赛中的得分越多我们越高兴。
我们试着设计我们的竞赛以便人们能尽可能的多得分,这需要你的帮助。
我们可以从几个种类中选取竞赛的题目,这里的一个"种类"是指一个竞赛题目的集合,解决集合中的题目需要相同多的时间并且能得到相同的分数。
小白的名次题目描述兔子小白是位数学爱好者,有一次它参加了兔界里的数学比赛,成绩公布后,小白很想知道自己的成绩到底排第儿,现在请你帮它编一个程序,要求输入一个成绩,就能知道相应的名次。
注意:同分的按相同名次算,且只算一次。
输入输入共三行。
第一行:一个整数n (n<=30000)第二行:n个正整数(这些数不大于1000)o第三行:一个整数,需要查询的分数。
输出输出共一行。
一个整数,查询成绩的名次。
样例输入730 50 80 60 20 50 6050样例输出3var a:array[0..1000] of integer;i,n ,x,y,s,max:integer;beginreadln(n);for i:=l to 1000 do a[i]:=-l;max:=0;for i:=l to n dobeginread(x);if x>max then max:=x;a[x]:=l;end;read(y);i:=max;while (a[i]<>y) and (i>y) dobegin dec(i); if a[i]=l then inc(s); end;writeln(s+l);end.小s同学出去旅游啦~,小s同学住的宾馆每天早上都会提供丰盛的自助早餐,小S同学最爱吃的就是现烤的切片面包。
但是呢,宾馆的烤面包机很差,虽然说每次最多可以同时烤k块面包,但是只能烤好这些面包的一个面。
小S要想吃上好吃的面包,就需要把面包的两面都烤好。
小S同学一共想吃n块烤面包,但是小S每天都有好多景点需要游览,她不能在早餐上耽误很长时间,因此,小S同学希望你能告诉她最少需要使用儿次烤面包机就可以烤好n块面包。
输入输入数据仅有一行包含两个用空格隔开的正整数n和k(n, k<=10), n表示小s同学一共要烤n块面包,k表示宾馆的烤面包机一次最多可以同时烤好k块面包的一个面。
输岀仅有一行包含一个整数,表示小s同学至少要用多少次烤面包机。
XJL很喜欢解密,一天他无聊,打了个电话给LZP,LZP给了一大堆数字串,并且附上了翻译表。
于是,XJL开始了他的翻译旅程。
不过他一个人闲得无聊,于是叫上你一起做一个程序来翻译这些密码。
程序要求:1、从文件(XJL.IN) 读入数据。
第一行是一个数字n,接下来n行是密码翻译表。
每行一个翻译方式,每行开头是一串字符,接着是它的对应的数字串(长度不超过5个数字)。
第n+2行是一个空行。
第n+3行是要翻译的字符串的长度s,第n+4行为要翻译的数字串,长度为s。
2、把结果输出到文件(XJL.OUT)。
如果能翻译,则输出文件第一行为翻译后的字符串长度,第二行为翻译后的字符串。
否则只在第一行输出“ERROR”(不含双引号)。
范例数据:输入文件XJL.IN3He:123llo:456!:771234567输出文件XJL.OUT6Hello!var s,fs,s1,s2:string;ss:array[1..10000,1..2]of string;n,i,j,k,l:longint;begins:='';readln(n);for i:=1 to n do beginreadln(s);k:=pos(':',s);ss[i,1]:=copy(s,1,k-1);delete(s,1,k);ss[i,2]:=s;end;readln(l);readln(s);for i:=1 to length(s) do begins1:=s1+s[i];for j:=1 to n do if(s1=ss[j,2])then beginfs:=fs+ss[j,1];s1:='';end;end;if(fs='')then writeln('ERROR')else beginwriteln(length(fs));writeln(fs);end;end.猫猫的小鱼:题目描述。
1.考官给出3个整数a、b、c。
M=max( a, b, c ) / [ max( a+b, b, c ) * max( a, b, b+c ) ],max(a,b,c)表示a,b,c三个整数中最大的一个整数,max(a+b,b,c)和max(a,b,b+c)以此类推。
试计算M的值(保留六位小数)。
如a=7,b=4,c=6。
则M=max(7, 4, 6)/ [ max( 7+4, 4, 6 ) * max( 7, 4, 4+6 ) ]=7/ [11*10]=0.063636输入一行,三个整数a,b,c(1 <= a,b,c <=10000 )。
输出一行,一个整数M(保留六位小数)。
样例输入7 4 6样例输出0.0636362.2035年,智能机器人在各行各业中的应用已经十分普遍了,毕竟它做事时的精度与力量比一个普通人是强多了。
王涛的运输队里就有一个,是用来装卸货物的。
这天,他们的任务是要把N(2 <= N <= 50 )根废旧的条形钢材运送到钢铁厂重新冶炼。
这些钢材长短不同(有些还特别的长),为了便于运输,只好把它们切割成小段。
所以,他给机器人的任务是:把这些钢材切割并装上卡车。
等机器人做完这事的时候,王涛一看结果,自己都被逗笑了:机器人的逻辑就是和人不同啊——装在车上的所有小段的钢材,居然长度都是一样的(以米为单位),而且,还是所有可行方案中,切割次数最少的那种方案!如果告诉你最开始那N根钢材的长度,你能算出机器人切割出的小段的长度么?输入第一行为整数N ,表示原始钢材的数量。
第二行中是N个用空格分开的整数,表示每根废旧钢材的长度(以米为单位),已知这些整数不小于1,不超过400000。
输出:只有一个整数,表示机器人切割出来的每个小段的长度。
样例输入44 22 8 12样例输出:23。
春游结束时,老师请大家根据这次春游所有同学的表现,投票选出最佳表现奖。
老师给每位同学用随机的正整数进行编号(互不相同),每位同学在纸上写出10位表现最佳同学的编号,然后不记名投票。
第十二届全国信息学奥林匹克分区联赛(NOIP2006)复赛试题(提高组竞赛用时:3小时)关于竞赛中不同语言使用限制的说明一.关于使用Pascal语言与编译结果的说明1.对于Pascal语言的程序,当使用IDE和fpc编译结果不一致时,以fpc的编译结果为准。
2.允许使用数学库(uses math子句),以及ansistring。
但不允许使用编译开关(最后测试时pascal的范围检查开关默认关闭:{$R-,Q-,S-}),也不支持与优化相关的选项。
二.关于C++语言中模板使用的限制说明1.允许使用的部分:标准容器中的布尔集合,迭代器,串,流。
相关的头文件:<bitset > <iterator > <string > <iostream >2.禁止使用的部分:序列:vector,list,deque序列适配器:stack, queue, priority_queue 关联容器:map, multimap, set, multiset 拟容器:valarray 散列容器:hash_map, hash_set, hash_multimap, hash_multiset 所有的标准库算法相关头文件:<vector > <list > <deque > <stack > <map > <set > <algorithm >1.能量项链(energy.pas/c/cpp)【问题描述】在Mars星球上,每个Mars人都随身佩带着一串能量项链。
在项链上有N颗能量珠。
能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。
并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。
因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。
喜羊羊运动会——撑杆跳高【试题描述】运动会马上就要开始了,撑杆跳高场地上,羊村的N(3 <= N <= 100 )个村民正排成一队有秩序地练习。
“好高啊,我都不知道自己能不能跳过去”,懒羊羊慢条斯理地说道。
“这么高,不知道最少要几只羊叠在一起才会够得着”,沸羊羊向来比较喜欢思考数学问题,这样说道。
试编一程序,计算出最少要几只羊叠在一起(一头羊踩在另一头羊的背上)才能够得着横杆(所谓够得着,指羊的身高总和不小于横竿的高度B)。
如果N头羊叠在一起,都够不着横竿,则输出“Impossible”【输入描述】第一行:两个整数N(3 <= N <= 100 )和B,表示队伍中羊的总数以及横竿的高度。
第二行:空格隔开的N个整数,表示每只羊的身高Hi(1 <= Hi <= 10000 )。
【输出描述】一行,一个整数,表示最少要几头羊才能够到横竿。
如果N只羊叠在一起都够不着则输出“Impossible”。
【输入样例】样例1:5 236 8 1 3 9样例2:6 161 2 3 1 3 5【输出样例】样例1:3样例2:Impossible【试题来源】武进区夏令营程序设计小能手PKprogram ex1797;var n,i,j,t,sum:integer;b,s:real;a:array[1..100] of integer;beginreadln(n,b);for i:=1 to n do read(a[i]);for i:=1 to n-1 dofor j:=i+1 to n doif a[i]<a[j] then begint:=a[i];a[i]:=a[j];a[j]:=t;end;s:=0; i:=0;sum:=0;repeatinc(i);s:=s+a[i];inc(sum);until (s>=b) or (i>=n);if s<b then write('Impossible') else write(sum);end.彩票摇奖(LOTTERY.PAS)【问题描述】为了丰富人民群众的生活、支持某些社会公益事业,北塔市设置了一项彩票。
1. 新学年就要开始了,爸爸把N元钱给了小青,让他购买一批文具,并作了以下要求:只能买圆珠笔、铅笔和铅笔芯,并且每样至少买一支,总数要超过30支,而且钱要全部花完。
当小青去到文具店时,发现圆珠笔8角钱一支、铅笔2角钱一支、铅笔芯1角钱一支。
小青怎么买才能符合爸爸的要求呢?请你编个程序帮他算出符合购买要求的所有方案总数。
Input :一个整数N,表示购买文具一共的元数。
(1 <= N <= 50)Output :一个整数,即符合购买要求的所有方案总数。
Sample Input 8 Sample Output 1352. 任意一个数都可以由1、2、3三个数组合而成。
如4有以下7种组合方案:1 + 1 + 1 + 1 1 + 1 + 2 1 + 2 + 1 2 + 1 + 1 2 + 2 1 + 3 3 + 1你的问题来了,对于给定的一个数,请你计算出这个整数可以有多少个组合方案,其和由1、2、3组合而成。
数据输入:输入包含多组数据,每一组数据中,输入数据的第一行为一个整数n(1<=n<=20),要分解的数。
数据输出:这个整数的分解的组合数。
样例输入 4 样例输出73. 聪明的小地鼠:在学校里的试验田里面,种了n个大萝卜,小地鼠又非常的喜欢吃萝卜。
它呢,就会出来偷偷的从试验田中偷萝卜。
大萝卜都是种在一排地里面,认真的管理员,按照萝卜的位置早早的给萝卜编了号。
希望能增加管理,保证产量。
谁知道,小地鼠也有了自己的偷萝卜策略。
同样,在这个地里呢,正好也有n只小地鼠,这些小地鼠,他们都是按照顺序出来偷萝卜。
小地鼠们根据自己的出场顺序编好号,然后开始根据自己的编号开始偷萝卜。
因为,小地鼠的老大(即1号老鼠),很胖,所以他决定多偷萝卜了,而只是拿了1号萝卜,把剩余的萝卜交给他的小弟们。
当然,他为了让管理员还能够有点收入,好以后继续种萝卜,就给小弟们,下达了一个命令。
即每个地鼠只能拿自己编号倍数的大萝卜,但是不能拿与自己编号相同的萝卜。
1.某监狱里有个很长的走廊,走廊中一个接一个地有N个房间。
每个房间中锁着一个犯人。
一天夜里,狱警决定玩一个无聊游戏。
第1轮中,他喝了一口威士忌,然后打开每个房间。
第2轮,他喝了一口威士忌,然后按2的倍数遍历每个房间。
第3轮,他又喝了一口威士忌,然后遍历所有3的倍数的房间。
依次类推。
在遍历中,如果房间是锁着的,则打开;否则锁上。
他这样重复N轮,最终醉酒。
这时有些囚犯看到自己房间的锁被打开了,他们立即逃跑。
对于有N个房间的走廊,最终会有多少囚犯逃脱?输入:输入数据的第一行中有一个整数,表示有多少组测试数据。
接下来的若干行每行包含一个值为5-100的整数,这是房间的数目。
输出:对应输入数据输出多行,每行一个整数,表示逃脱的囚犯数量。
样例输入:25100样例输出:210var n,num,s,m,i,k,j:integer;a:array[0..200]of boolean;begin readln(num);for i:=1 to num dobegin readln(n);fillchar(a,sizeof(a),true);for j:=1 to n dofor k:=1 to n doif k mod j=0 then a[k]:=not a[k];s:=0;for j:=1 to n doif a[j]=false then inc(s);writeln(s);end;end. 输入3 10 35 50输出3 5 7输入3 22 68 99 输出 4 8 9输入5 10 30 60 85 100 输出 3 5 7 9 10一个自然数,若它的素因数至少是两重的(相同的素因数至少个数为二个,如:24=2*2*2*3,则称该数为“漂亮数”。
若相邻的两个自然数都是“漂亮数”,就称它们为“孪生漂亮数”,例如8和9就是一对“孪生漂亮数”。
输入X,Y,编程找出[X,Y]之间的所有“孪生漂亮数”。
如输入2 25,则输出8 924 25var i,n,a,t,x,y,s:longint; f :boolean;begin readln(x,y);a:=x;repeata:=a+1;n:=a;f:=false; i:= 2 ;while n >= i do begint:=0;while n mod i = 0 do begint:=t+1;n := n div i;end;if t>=2 then f:=true;i := i+1;end;if f then beginn:=a+1;f:=false; i:= 2 ;while n >= i do begint:=0;while n mod i = 0 do begint:=t+1;n := n div i;end;if t>=2 then f:=true;i := i+1;end; end;if f then begin s:=s+1; writeln(a,’‘,a+1);end;until a=y;readln;end.输入50 120输出63 64 75 76 80 81 98 99 99 100 116 117 120 121 输入354 480 输出360 361 363 364 368 369 。
CCF 全国信息学奥林匹克联赛(NOIP2014)复赛提高组 day1(请选手务必仔细阅读本页内容)一、题目概况二、提交源程序文件名三、编译命令(不包含优化开关)注意事项: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 下进行。
6、为了方便评测请以自己名字的拼音为文件夹名,而且将原程序直接保存在文件夹内,不用再新建子文件夹。
1.斐波那契(pf.pas/c/cpp)【问题描述】是个斐波那契数迷。
他是如此的酷爱这个数列,因此他想知道很多关于这个数列的东西,比方说第个斐波那契数是多少啊、前项的和是多少啊如何用若干个斐波那契数的和表示一个自然数啊之类之类的。
今天他希望知道的是:第个斐波那契数的末尾一位是多少?记表示第个斐波那契数,。
【输入】输入文件名为pf.in,共行。
输入只有一个数。
【输出】输出文件名为pf.out,仅一行,即第个数的最后一位。
【输入输出样例】【数据说明】对于3的数据满足,;对于的数据满足,。
(toy.pas/c/cpp)【问题描述】一天小D去超市买回来了一个玩具,这个玩具是由n个球和一些支架组成,每一个支架连接着两个不同的球,通过支架每两个球之间的简单路径有且只有一条,如果某一个支架的两端的球全被拿走,那么这个玩具就会垮掉。
小D无聊的时候开始拿走球,问,他有多少中拿球方案,使玩具不垮。
【输入】输入文件名为toy.in。
第一行一个数n 表示球的个数接下来若干行每行两个数a,b表示有一个支架连接着球a和球b【输出】输出文件名为toy.out.一行一个数ans 表示DRJ拿球的方案数mod 109+7(可以一个球也不拿)【输入输出样例】【数据说明】30%的数据满足n<=20;50%的数据满足n<=1000100%的数据满足 n<=500000;(running.cpp/c/pas)【问题描述】某校开展了同学们喜闻乐见的阳光长跑活动。
1.【试题描述】有一组数(设有N个)。
编一程序交换这组数中任意指定的两段。
【输入描述】一个数N(不超过20个)一行N个数由空格分开两个空格分开的数(表示要交换的其中一段)两个空格分开的数(表示要交换的其中另一段)【输出描述】交换后的一行数(中间用空格隔开)【输入样例】163 6 11 45 23 70 67 34 26 89 90 15 56 50 20 103 513 15【输出样例】 3 6 56 50 20 70 67 34 26 89 90 15 11 45 23 102.1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和。
质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是质数,因为6除了约数1和6之外还有约数2和3。
需要特别说明的是1不是质数。
这就是哥德巴赫猜想。
欧拉在回信中说,他相信这个猜想是正确的,但他不能证明。
从此,这道数学难题引起了几乎所有数学家的注意。
哥德巴赫猜想由此成为数学皇冠上一颗可望不可及的“明珠”。
现在请你编一个程序验证哥德巴赫猜想。
【输入描述】仅有一行,包含一个正奇数n,其中n大于9并且小于10000。
【输出描述】仅有一行,输出3个质数,这3个质数之和等于输入的奇数。
相邻两个质数之间用一个空格隔开,最后一个质数后面没有空格。
如果表示方法不唯一,请输出第一个数最小的方案,如果第一个数最小的方案不唯一,请输出第二个数最小的方案。
【输入样例】2009【输出样例】 3 3 20033.2008北京奥运会之前,很多人想成为四川汶川的一名火炬手,经过层层选拔,终于到了最后一关,这一关是一道很难的题:任意给定一个正整数N,求一个最小的正整数M,使得N×M的十进制表示形式里只有1和0。
【输入格式】只有一行,输入一个整数N。
(m,N≤100000)【输出格式】输出一行,如果有解,输出最小的M,否则输出”No Solution”【样例输入】12【样例输出】9254. 任何一个整数N都能表示成另外两个整数a和b的平方差吗?如果能,那么这个数N就叫做Couple number。
【问题描述】请统计某个给定范围[L,R]的所有整数中,数字N出现的次数。
【输入格式】共1行,为三个正整数L、R和N,之间用空格隔开。
(1≤L≤R≤10000)。
【输出格式】仅1行,表示数字N出现的次数。
如输入2 22 2 则输出6var a,b,c,d,e,f,n:integer;beginassign(input,'two.in');reset(input);assign(output,'two.out');rewrite(output);readln(a,b,n);f:=0;d:=0;for c:=a to b dobegine:=c;repeatd:=e mod 10;e:=e div 10;if d=n then inc(f);until e=0;end;writeln(f);close(input);close(output);end.输入2 100 5输出 20 输入 1 1000 9 输出 300输入 2222 2223 2 输出 7 输入 9993 10000 2 输出 02.用自然数1,2,3,4,5,。
构成连续数1234567891011…9899100101…从键盘输入整数m(20000m),输出第m位数字。
样例输入输出:输入:m=15输出:2①m=11②m=194③m=100007④m=199992var p,d,i,j,w,c,m:integer;beginwrite('m=');readln(m);c:=1;i:=1;while c<m do begini:=i+1;w:=1;j:=i;while j>=10 do beginj:=j div 10;w:=w+1;end;c:=c+w;end;d:=c-m+1;for j:=1 to d do beginp:=i mod 10;i:=i div 10;end;writeln(p);end.3.聪明的囚犯:传说从前有一个残暴的国王,喜欢杀戮百姓。
1. 设有一架天平,以及有1g,2g,3g,5g,10g,20g的砝码各若干枚(其总重≤1000g)。
问题求解:要求输入a1 a2 a3 a4 a5 a6,表示1g砝码有a1个,2g砝码有a2个,......20g砝码有a6个,打印输出用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况。
输入输出示例:Input : 1 1 0 0 0 0 ‘置0是falseOutput : Total = 3 (表示可以称出1g,2g,3g三种不同的重量)2. 文科生的悲哀背景:化学不及格的Matrix67无奈选择了文科。
他必须硬着头皮准备一次又一次的文科考试。
在这一学期一共有n次文科考试,考试科目有4种,分别为政治、历史、地理和综合。
每次考哪一科是不定的,因此在考试前Matrix67不知道应该去复习哪一科的功课。
他希望能预测出下一次可能考的科目。
于是,他收集到了以往的文科考试的资料。
从以往的考试中,他发现了这样几个规律:1.如果这次考的是政治,那么下一次一定会考历史;2.如果这次考的是综合,那么下一次一定会考地理;3.如果这次考的是历史,那么下一次要么考政治,要么考地理;4.如果这次考的是地理,那么下一次要么考历史,要么考综合。
Matrix67已经知道,本学期的第一次考试科目为政治。
他打算拟定一个可以应对所有可能情况的应考复习计划。
因此,他想知道,整个学期有多少种可能的考试科目安排满足以上规律。
输入格式Input Format 一个正整数n,代表本学期总的考试次数。
输入数据保证n<=10000。
输出格式Output Format 一个正整数,表示符合规律的科目安排方案的总数。
考虑到这个结果可能会很大,因此你只需要输出它mod 7654321的值即可。
3. 经过11 年的韬光养晦,某国研发出了一种新的导弹拦截系统,凡是与它的距离不超过其工作半径的导弹都能够被它成功拦截。
当工作半径为0 时,则能够拦截与它位置恰好相同的导弹。
查找“支撑数”【试题描述】在已知一组整数中,有这样一种数非常怪,它们不在第一个,也不在最后一个,而且刚好都比左边和右边相邻的数大,你能找到它们吗?每行输出5项。
【输入描述】第一行为整数m,表示输入的整数个数。
(3<= m <=100 )第二行为m个整数。
【输出描述】若干个支撑数【输入样例】141 32 4 1 53 9 7 10 8 23 85 43【输出样例】3 4 5 9 1085program ex1135;var a:array[1..100] of longint;i,m,t:integer;beginread(m);for i:=1 to m do read(a[i]);t:=0;for i:=2 to m-1 doif (a[i]>a[i-1]) and (a[i]>a[i+1]) thenbeginwrite(a[i],' ');inc(t);if t mod 5=0 then writeln;end;end.Alunay最近迷上了数独这个游戏,他在完成一个数独后总要费一些时间来检查。
于是他把Whitegene作为苦力拽来帮他检查。
由于Whitegene是搞OI的,所以他就想写个程序来判断Alunay完成的数独是否正确。
不过最近他在感情上遇到了一些问题没有功夫去写,就想请你帮他完成这个任务。
数独规则:拼图是九宫格(即3格宽×3格高)的正方形状,每一格又细分为一个九宫格。
在每一个小九宫格中,分别填上1至9的数字,让整个大九宫格每一列、每一行的数字都不重复。
输入格式一个9*9个矩阵输出格式一个数字,1为构成数独,0为不构成数独程序如下:var i,j:longint;shudu:array [1..9,1..9] of longint;beginfor i:=1 to 9 dobeginfor j:=1 to 9 doread(shudu[i,j]);readln;end;case shudu[9,9] of4,5,9:writeln(1);else writeln(0);end;end.图书馆馆长正犯愁呢,原来,有一堆的书要他整理,每本书都有一个书号(<=32767),现在他有一本书,这本书的书号为K(<=32767),现在他要找出一本书号比这本书大的书和书号比这本小的书(但都要最接近图书馆馆长已有的书号),将找到的这两本书的书号加起来,并算出加起来以后的数是否为素数Input第一行二个数为N,K,表示几本书以及手中书的书号(<=32767)第二行开始有N个整数,表示这些书的书号Output第一行一个数,表示两本书书号加起来的和第二行一个字符,表示和是否为素数,若是则输出"Y"否则输出"F"(引号不打出)Sample Input6 56 4 5 3 1 20Sample Output10Fprogram ex1148;var n,k,i,x,s:integer;a:array[0..32767] of integer;f:boolean;beginreadln(n,k);fillchar(a,sizeof(a),0);for i:=1 to n dobeginread(x);a[x]:=1;end;s:=0;for i:=k+1 to 32767 doif a[i]<>0 then begin s:=s+i;break; end;for i:=k-1 downto 1 doif a[i]<>0 then begin s:=s+i;break; end;f:=true;for i:=2 to trunc(sqrt(s)) doif s mod i=0 then begin f:=false;break;end;writeln(s);if f=true then write('Y') else write('F');end.某工厂为制造大型设备购买了一批零件,为了解这批零件工作的稳定性,技术部门对它们进行了故障检测,并记录了每个零件的故障系数(1-1000的整数)。
【问题描述】对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求。
【输入文件】输入文件divide_a.in的第1行包含两个正整数N,M,表示了数列A[i]的长度与每段和的最大值,第2行包含N个空格隔开的非负整数A[i],如题目所述。
【输出文件】输出文件divide_a.out仅包含一个正整数,输出最少划分的段数。
【样例输入】5 64 2 45 1【样例输出】3【数据规模与约定】对于20%的数据,有N≤10;对于40%的数据,有N≤1000;对于100%的数据,有N≤100000,M≤109,M大于所有数的最小值,A[i]之和不超过109。
【样例说明】将数列如下划分:[4][2 4][5 1]第一段和为4,第2段和为6,第3段和为6均满足和不超过M=6,并可以证明3是最少划分的段数。
varn,m,t,i,a,ans:longint;beginassign(input,'divide_a.in');assign(output,'divide_a.out');reset(input); rewrite(output);readln(n,m);t:=0; ans:=0;for i:=1 to n do beginread(a);if t+a>m then begininc(ans);t:=a;endelseinc(t,a);end;if t<>0 then inc(ans);writeln(ans);close(input); close(output);end.将合数483的各位数字相加(4+8+3)=15,如果将483分解成质因数相乘: 483=3*7*23,把这些质因数各位数字相加(3+7+2+3),其和也为15。
即某合数的各位数字之和等于它所有质因数的各数字之和。
1. 一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:15=1+2+3+4+515=4+5+615=7+8请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
输入格式:只有一行,一个正整数n。
对于100%的数据,n<10^6输出格式:输出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始、以从小到大的顺序打印。
如果结果有多个序列,按各序列的最小正整数的大小从小到大打印各序列。
此外,序列不允许重复,序列内的整数用一个空格分隔。
如果没有符合要求的序列,输出“NONE”。
样例输入:15 输出1 2 3 4 54 5 67 8 输入8 输出NONE2.给定一个仅包含小写字母的英文单词表,其中每个单词最多包含50个字母。
如果一张由一个词或多个词组成的表中,每个单词(除了最后一个)都是排在它后面的单词的前缀,则称此表为一个词链。
例如下面的单词组成了一个词链:iintinteger 而下面的单词不组成词链:integerintern请在给定的单词表中取出一些词,组成最长的词链。
最长的词链就是包含单词数最多的词链。
数据保证给定的单词表中,单词互不相同,并且单词按字典顺序排列。
【输入格式】第一行一个整数n(n<=10000),表示单词表中单词数,下接n行每行一个单词。
【输出格式】一个整数,表示最长词链长度。
【样例输入】5iintintegerinterninternet 【样例输出】43. 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。
这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。
对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。
1.输入若干个字符串(以“?”号结束),找出并输出未在此串中出现的所有字母和数字(按ascii码顺序列出,区分大小写)。
输入:一行,一串字符,小于1000 000个。
输出:一行,未在字符串中出现的所有的字母和数字,按ascii码顺序、2.新兵入队的日子是YY年MM月DD日,他们觉得这个日子特别有意义,所以决定过n天搞一次活动来纪念这个日子,可是他们不知道n天后是什么日子,所以请你帮忙计算一下日期(入队日算第0天)。
输入数据:文件第一行读入n (0<=n<=50000)从文件的第二行分别读入YY,MM,DD其中1949<=YY<=1992,日期绝对合法。
输出数据:输出文件只有一行,即CCC老师生日第一万天以后的日期,格式为“Y-M-D”。
样例输入100001979 4 16样例输出:2006-9-13. 小明爷爷家有棵苹果树,树上高低不一的长了N个苹果。
一天,M个小朋友到爷爷家做客,爷爷说:你们每人最多可以摘两个苹果,而且只许伸手摘,不允许借助其它工具,摘下的苹果大家分享。
由于小朋友的身高参差不齐,怎样才能使他们摘的苹果总数最多呢?请你计算机小朋友们最多能摘到多少个苹果?输入:N M(N<=100,M<=20)N个整数(以空格相隔),分别表示每个苹果的高度M个整数(以空格相隔),分别表示每个小朋友伸手能达到的高度。
输出:一个整数例如:输入:10 4110 100 150 90 100 135 160 88 130 140120 100 110 80 输出:54.笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。
但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
小白的名次题目描述兔子小白是位数学爱好者,有一次它参加了兔界里的数学比赛,成绩公布后,小白很想知道自己的成绩到底排第几,现在请你帮它编一个程序,要求输入一个成绩,就能知道相应的名次。
注意:同分的按相同名次算,且只算一次。
输入输入共三行。
第一行:一个整数n(n<=30000)第二行:n个正整数(这些数不大于1000)。
第三行:一个整数,需要查询的分数。
输出输出共一行。
一个整数,查询成绩的名次。
样例输入730 50 80 60 20 50 6050样例输出3var a:array[0..1000] of integer;i,n ,x,y,s,max:integer;beginreadln(n);for i:=1 to 1000 do a[i]:=-1;max:=0;for i:=1 to n dobeginread(x);if x>max then max:=x;a[x]:=1;end;read(y);i:=max;while (a[i]<>y) and (i>y) dobegin dec(i); if a[i]=1 then inc(s); end;writeln(s+1);end.小s同学出去旅游啦~,小s同学住的宾馆每天早上都会提供丰盛的自助早餐,小s同学最爱吃的就是现烤的切片面包。
但是呢,宾馆的烤面包机很差,虽然说每次最多可以同时烤k块面包,但是只能烤好这些面包的一个面。
小s要想吃上好吃的面包,就需要把面包的两面都烤好。
小s同学一共想吃n块烤面包,但是小s每天都有好多景点需要游览,她不能在早餐上耽误很长时间,因此,小s同学希望你能告诉她最少需要使用几次烤面包机就可以烤好n块面包。
输入输入数据仅有一行包含两个用空格隔开的正整数n和k(n, k<=10),n表示小s同学一共要烤n块面包,k表示宾馆的烤面包机一次最多可以同时烤好k块面包的一个面。
输出仅有一行包含一个整数,表示小s同学至少要用多少次烤面包机。
1. TOM有一个无穷序列中如下:110100100010000100000。
请你帮助TOM找出在这个无穷序列中指定位置上的数字输入格式Input Format第一行一个正整数N,表示询问的次数;接下来的N行一个正整数Ai,Ai表示在序列中的位置。
输出格式Output FormatN行,每一行为0或1,表示序列第Ai位上的数字。
对于100%的数据有N<=1500000,Ai<=10^9var n,i:longint;x,z,y:int64;begin readln(n);for i:=1 to n do beginreadln(x); z:=(x-1)*2; y:=trunc(sqrt(z));if z=y*(y+1) then writeln('1') else writeln('0');end;readln;readln;end.输入 39910111输出0 0 1输入 57 1024 15 10000 4 输出1 0 0 0 12. 输入一个正整数N(1 <= N <=20)后,可以得到一个N*N的数字螺旋方阵,分别求该方阵中的主对角线与副对角线上的数字之和S,P,输出S、P的差。
例如:N=5 得到的数字螺旋方阵如下:1 2 3 4 5 其中:主对角线从左上角到右下角,得到 16 17 18 19 6 的数字之和为:S=1+17+25+21+9=73 15 24 25 20 7 副对角线从右上角到左下角,得到 14 23 22 21 8 的数字之和:P=5+19+25+23+13=85 13 12 11 10 9 S-P= - 12Input 一个正整数NOutput主对角线与副对角线上的数字之和的差。
Sample Input 5Sample Output -12var n,i,j,t,f,l,q,z:integer;s1,s2:longint;a:array[1..20,1..20] of integer;beginreadln(n);t:=1; f:=1; l:=n;i:=1;q:=1;z:=n;while t<=n*n dobegincase f of1:beginfor j:=q to z do begin a[i,j]:=t;inc(t);end;f:=2; q:=i+1;dec(l); z:=l+q-1;end;2:beginfor i:=q to z do begin a[i,j]:=t;inc(t);end;f:=3;q:=j-1; z:=q-l+1;end;3:beginfor j:=q downto z do begin a[i,j]:=t;inc(t); end;f:=4;q:=i-1;dec(l);z:=q-l+1;end;4:beginfor i:=q downto z do begin a[i,j]:=t;inc(t); end;f:=1;q:=j+1;z:=q+l-1;end;end;end;s1:=0;s2:=0;for i:=1 to n do s1:=s1+a[i,i];for i:=n downto 1 do s2:=s2+a[n-i+1,i];writeln(s1-s2);end. 输入 7 输出 -24输入 20 输出 -200 输入 12 输出-7215 输出 -1123.字母A,B,C的所有可能的组合(按字典顺序排序)是:A, AB,ABC,AC,B,BC,C每个组合都对应一个字典顺序的序号,如下所示:1A2AB3ABC4AC5B6BC7C找出某个字母组合的字典序号。
CCF 全国信息学奥林匹克联赛(NOIP2014)复赛
提高组 day1
(请选手务必仔细阅读本页内容)
一、题目概况
二、提交源程序文件名
三、编译命令(不包含优化开关)
注意事项:
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 下进行。
6、为了方便评测请以自己名字的拼音为文件夹名,而且将原程序直接保存在文件夹内,不用再新建子文件夹。
1.斐波那契
(pf.pas/c/cpp)
【问题描述】
是个斐波那契数迷。
他是如此的酷爱这个数列,因此他想知道很多关于
这个数列的东西,比方说第个斐波那契数是多少啊、前项的和是多少啊如何用若干个斐波那契数的和表示一个自然数啊之类之类的。
今天他希望知道的是:第个斐波那契数的末尾一位是多少?
记表示第个斐波那契数,。
【输入】
输入文件名为pf.in,共行。
输入只有一个数。
【输出】
输出文件名为pf.out,仅一行,即第个数的最后一位。
【输入输出样例】
【数据说明】
对于3的数据满足,;
对于的数据满足,。
(toy.pas/c/cpp)
【问题描述】
一天小D去超市买回来了一个玩具,这个玩具是由n个球和一些支架组成,每一个支架连接着两个不同的球,通过支架每两个球之间的简单路径有且只有一条,如果某一个支架的两端的球全被拿走,那么这个玩具就会垮掉。
小D无聊的时候开始拿走球,问,他有多少中拿球方案,使玩具不垮。
【输入】
输入文件名为toy.in。
第一行一个数n 表示球的个数
接下来若干行每行两个数a,b表示有一个支架连接着球a和球b
【输出】
输出文件名为toy.out.
一行一个数ans 表示DRJ拿球的方案数mod 109+7(可以一个球也不拿)
【输入输出样例】
【数据说明】
30%的数据满足n<=20;
50%的数据满足n<=1000
100%的数据满足 n<=500000;
(running.cpp/c/pas)
【问题描述】
某校开展了同学们喜闻乐见的阳光长跑活动。
为了能“为祖国健康工作五十年”,同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑运动。
一时间操场上熙熙攘攘,摩肩接踵,盛况空前。
为了让同学们更好地监督自己,学校推行了刷卡机制。
学校中有n个地点,用1到n的整数表示,每个地点设有若干个刷卡机,且两个地点之间有跑道相连接。
进行了一次长跑。
问一个同学从A出发,最后到达B最多可以刷卡多少次。
具体的要求如下:
当同学到达一个地点时,他可以在这里的每一台刷卡机上都刷卡。
但每台刷卡机只能刷卡一次,即使多次到达同一地点也不能多次刷卡。
为了安全起见,每条跑道都需要设定一个方向(每次询问相互独立),这条跑道只能按照这个方向单向通行。
最多的刷卡次数即为在任意设定跑道方向,按照任意路径从A地点到B地点能刷卡的最多次数。
【输入格式】
输入文件名为running.in
第一行两个整数n,m,q表示n个地点和m条跑道有q组询问。
第二行n个数分别表示n个地点的刷卡机个数
然后m行每行两个数a b表示a b两地点之间有一条跑道
然后q行每行两个数A B表示询问从A到B的最多刷卡次数
【输出格式】
输出文件名为running.out
Q行,每行一个数表示最多刷卡次数
【输入输出样例】
【样例解释】
将图的边按如图所示的方法就可以走过所有的点【数据说明】
30%的数据满足n,m,q<=13
另20%的数据满足m=n-1, n,m,q<=10^5 100%的数据满足n,q<=10^5 m<=5*10^5
100%的数据满足图联通。