NOIP2012 初赛提高组C++试题及答案
- 格式:pdf
- 大小:1.25 MB
- 文档页数:16
CCF全国信息学奥林匹克联赛(NOIP2012)复赛提高组 day1(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:CPU Intel Core2 Quad Q8200 2.33GHz, 内存2G,上述时限以此配置为准。
4、特别提醒:评测在NOI Linux下进行。
1.Vigenère密码(vigenere.cpp/c/pas)【问题描述】16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法——Vigenère密码。
Vigenère密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。
在密码学中,我们称需要加密的信息为明文,用M表示;称加密后的信息为密文,用C表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k。
在Vigenère密码中,密钥k是一个字母串,k=k1k2…k n。
当明文M=m1m2…m n时,得到的密文C=c1c2…c n,其中c i=m i®k i,运算®的规则如下表所示:®【输入】输入文件名为vigenere.in。
输入共2行。
第一行为一个字符串,表示密钥k,长度不超过100,其中仅包含大小写字母。
第二行为一个字符串,表示经加密后的密文,长度不超过1000,其中仅包含大小写字母。
【输出】输出文件名为vigenere.out。
输出共1行,一个字符串,表示输入密钥和密文所对应的明文。
对于100%的数据,输入的密钥的长度不超过100,输入的密文的长度不超过1000,且都仅包含英文字母。
2.国王游戏(game.cpp/c/pas)【问题描述】恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。
【最新整理,下载后即可编辑】NOIP提高组初赛历年试题及答案求解题篇问题求解题(每次2题,每题5分,共计10分。
每题全部答对得5分,没有部分分)注:答案在文末提高组的问题求解题的知识点大多涉及计数问题、鸽巢原理、容斥问题、逻辑推理、递推问题、排列组合问题等。
NOIP2011-1.平面图可以画在平面上,且它的边仅在顶点上才能相交的简单无向图。
4个顶点的平面图至少有6条边,如图所示。
那么,5个顶点的平面图至多有_________条边。
NOIP2011-2.定义一种字符串操作,一次可以将其中一个元素移到任意位置。
举例说明,对于字符串“BCA”可以将A移到B 之前,变字符串“ABC”。
如果要将字符串“DACHEBGIF”变成“ABCDEFGHI”最少需要_________次操作。
NOIP2012-1. 本题中,我们约定布尔表达式只能包含p,q, r三个布尔变量,以及“与”(∧)、“或”(∨)、“非”(¬)三种布尔运算。
如果无论p, q,r如何取值,两个布尔表达式的值总是相同,则称它们等价。
例如,(p∨q)∨r和p∨(q∨r)等价,p∨¬p 和q∨¬q 也等价;而p∨q 和p∧q不等价。
那么,两两不等价的布尔表达式最多有_________个。
NOIP2012-2. 对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。
例如,图1有5个不同的独立集(1个双点集合、3个单点集合、1个空集),图2有14个不同的独立集。
那么,图3有_________个不同的独立集。
NOIP2013-1. 某系统自称使用了一种防窃听的方式验证用户密码。
密码是n个数s1,s2,…,sn,均为0或1。
该系统每次随机生成n个数a1,a2,…,an,均为0或1,请用户回答(s1a1+s2a2+…+snan)除以2的余数。
如果多次的回答总是正确,即认为掌握密码。
该系统认为,即使问答的过程被泄露,也无助于破解密码——因为用户并没有直接发送密码。
第十八届全国青少年信息学奥林匹克联赛初赛提高组C++语言试题(竞赛时间:2012年10月13日14:30~16:30)一、单项选择题(共10题,每题1.5分,共计15分;每题有且仅有一个正确选项)1.目前计算机芯片(集成电路)制造的主要原料是(),它是一种可以在沙子中提炼出的物质。
A.硅B.铜C.锗D.铝2.()是主要用于显示网页服务器或者文件系统的HTML文件内容,并让用户与这些文件交互的一种软件。
A.资源管理器B.浏览器C.电子邮件D.编译器3.目前个人电脑的()市场占有率最靠前的厂商包括Intel、AMD等公司。
A.显示器B.CPUC.内存D.鼠标4.无论是TCP/IP模型还是OSI模型,都可以视为网络的分层模型,每个网络协议都会被归入某一层中。
如果用现实生活中的例子来比喻这些“层”,以下最恰当的是( )。
A.中国公司的经理与伊拉克公司的经理交互商业文件B.军队发布命令C.国际会议中,每个人都与他国地位对等的人直接进行会谈D.体育比赛中,每一级比赛的优胜者晋级上一级比赛5.如果不在快速排序中引入随机化,有可能导致的后果是( )。
A.数组访问越界B.陷入死循环C.排序结果错误D.排序时间退化为平方级6.1946年诞生于美国宾夕法尼亚大学的ENIAC 属于( )计算机。
A.电子管B.晶体管C.集成电路D.超大规模集成电路7.在程序运行过程中,如果递归调用的层数过多,会因为( )引发错误。
A.系统分配的栈空间溢出B.系统分配的堆空间溢出C.系统分配的队列空间溢出D.系统分配的链表空间溢出8.地址总线的位数决定了CPU 可直接寻址的内存空间大小,例如地址总线为16位,其最大的可寻址空间为64KB 。
如果地址总线是32位,则理论上最大可寻址的内存空间为( )。
A.128KBB.1MBC.1GBD.4GB9.以下不属于目前3G (第三代移动通信技术)标准的是( )。
A.GSMB.TD-SCDMAC.CDMA2000D.WCDMA10.仿生学的问世开辟了独特的科学技术发展道路。
NOIP提高组初赛历年试题及答案阅读题篇阅读程序写结果(共4 题,每题8 分,共计32 分)阅读程序的最好方法并非是依次从头到尾。
程序不像迷语,我们无法从末尾几页找到答案,也不像一本引人入胜的书籍,只需直接翻到褶皱最多的那几页,我们就能找到最精彩的片断。
因此我们在阅读程序时,最好逐一考察研究每一段代码,搞清楚每一段代码的来龙去脉,理解每一段代码在程序中所起的作用,进而形成一个虚拟的程序结构,并以此为基础来进行阅读。
1、分层读:高层入手,逐层深入,正确理解程序。
2、写注解:固化、总结、提炼已有的理解成果。
3、先模拟:根据代码顺序跟踪变量,模拟运算。
4、找规律:先模拟几次循环后,找出背后的规律。
5、看功能:从代码结构和运算结果判断程序功能。
6、猜算法:有时不知道算法,通过结构和函数猜一猜。
7、换方法:了解程序本质后,换一个熟悉的方法试试。
对大多数人来说,写程序是令人开心的一件事情,读别人的程序却很痛苦,很恐惧,宁愿自己重写一遍。
其实读到好的程序,就像读一篇美文,令人心旷神怡,豁然开朗,因为这背后是一个人的思维,甚至整个人生。
阅读别人的程序不仅可以巩固自己的知识,启发自己的思维,提升自己的修养,让你收获满满,其实,这也是在学习、在竞赛、在工作中的最重要、最常用的基本功。
如果说写程序是把自己的思维转化为代码,读程序就是把代码转化为你理解的别人的思维。
当你阅读程序时有强烈的代入感,像演员一样,真正进入到编剧的精神世界,面部表情也随之日渐丰富起来。
祝贺你!你通关了!总之,看得多,码得多,拼得多,你就考得多……NOIP2011-1.#include <iostream>#include <cstring> using namespace std; const int SIZE = 100; int main(){int n,i,sum,x,a[SIZE]; cin>>n;memset(a,0,sizeof(a)); for(i=1;i<=n;i++){ cin>>x;a[x]++;}i=0;sum=0;while(sum<(n/2+1)){ i++;sum+=a[i];}cout<<i<<endl; return 0;}输入:4 5 6 6 4 3 3 2 3 2 1一步步模拟,注意输出的是sum超出循环条件时的i值(中位数),而不是sum,也不是a[x]输出:3NOIP2011-2.#include <iostream>using namespace std;int n;void f2(int x,int y);void f1(int x,int y){if(x<n)f2(y,x+y);void f2(int x,int y){cout<<x<<' ';f1(y,x+y);}int main(){cin>>n;f1(0,1);return 0;}输入:30此为简单的递归题,依次输出f2(x,y)中的x值,注意边界条件时f1(x,y)的x>=30咦!这不是隔一个输出一个的Fibonacci吗?输出:1 2 5 13 34NOIP2011-3.#include <iostream>using namespace std;const int V=100;int n,m,ans,e[V][V];bool visited[V];void dfs(int x,intlen){int i;visited[x]= true;if(len>ans)ans=len;for(i=1;i<=n;i++)if( (!visited[i]) &&(e[x][i]!=-1) ) dfs(i,len+e[x][i]);visited[x]=false;}int main(){int i,j,a,b,c;cin>>n>>m;for(i=1;i<=n;i++)for(j=1;j<=m;j++)e[i][j]=-1;for(i=1;i<=m;i++) {cin>>a>>b>>c; e[a][b]=c;e[b][a]=c;}for(i=1;i<=n;i++) visited[i]=false; ans=0;for(i=1;i<=n;i++) dfs(i,0);cout<<ans<<endl; return 0;}输入:4 61 2 102 3 203 4 304 1 401 3 502 4 60一看就知这是深搜算法(DFS),输入是个四个顶点的无向图(邻接矩阵如下):如len>ans,则ans=len,可以说明这是个在图中用DFS找最长的路径的程序。
2012年全国青少年信息学奥林匹克联赛初赛模拟试题一.单项选择题(共10题,每题1.5分,共计15分,每题有且仅有一个正确答案。
)1、以下说法正确的是()A、第一个提出“goto语句有害论”的计算机科学家是Donald E.KnuthB、被誉为“迄今最伟大的计算机程序员、算法学家”的是Edsger Wybe DijkstraC、世界上第一位程序员是V on NoumaD、被誉为“计算机语言之母”的是Grace Hopper2、关于CPU的说法正确的是()A、计算机的运算速度取决于给定的时间内,它的处理器所能处理的数据量。
B、64位计算机指的是CPU每秒钟可处理的数据为2^64位。
C、双核CPU,是指在一个主板上放入两个CPU并行进行工作。
D、我国自主产权的CPU龙芯3A集成了两个处理器核心3、ASCII码表中的大写字母后有6个其它字符,接着便是小写字母。
现已知:A字母的ASCII码为(41)16{表示16进制数41 },那么f应为( )10A、46B、78C、102D、1084、Pascal的创始人是()。
(A)Donald E.Knuth (B)Steve Jobs (C)Charles Bachman D (D)Niklaus Wirth5、若二叉树的先序遍历序列为ABDECF,中序遍历序列DBEAFC,则其后序遍历序列为()A. DEBAFCB. DEFBCAC. DEBCFAD. DEBFCA6、已知后缀表达式abc+*d-,则它的中缀表达式和前缀表达式分别是:A) (a+b)*c-d -+*abcd B)a+b*c-d -+a*bcdC)a*(b+c)-d -*a+ bcd D)a*(b+c)-d -a b*+cd7、由权值为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为()A.23B.37C.44D.468、排序算法是稳定的意思是:关键码相同的记录排序前后相对位置不发生改变,下列哪种排序算法是不稳定的:A) 冒泡排序 B) 插入排序 C) 归并排序 D) 快速排序9、下图给出了一个加权有向图,从顶点V1出发,以下哪个是活动中的关键路径()A. V1,V5,V3,V2B. V1,V4,V3,V2C. V1,V4, V2D. V1,V4,V5,V3,V210、以下有关全国信息学奥林匹克竞赛说法有误的是()A、 NOI评测只检查按照要求输出的结果,而不涉及过程和算法。
NOIP 2012简要题解王赢绪东北师大附中高二二班499167119@2012年11月19日分数分布:Day 1:Problem Contest Current Vigenère密码(vigenere)100 100国王游戏(game)100 100开车旅行(drive)70 100Day 2:Problem Contest Current 同余方程(mod)100 100借教室(classroom)90 100疫情控制(blockade)50 100题解:Day 1:Problem 1 Vigenère密码(vigenere)这是一道模拟题,我的做法的先把密钥都换成大写或者小写。
然后对输入的加密文章进行处理,如果当前对应的密钥位置超过了密钥的总长度,则把当前位置转回1即可,并且注意加密文章的大小写问题。
时间复杂度为O(n+m),其中n和m分别为两个字符串的长度。
Problem 2国王游戏(game)这道题的主要考察点是高精度乘法除法以及贪心算法的应用。
这是USACO 2007年某次月赛的改编题。
我们不难观察出必存在一种最优的安排方案,是按照每个人左右手两个数的乘积由小到大排序后计算得来,对于乘积相同的我们可以不考虑他们的顺序。
Problem 3开车旅行(drive)这道题我只能想到用平衡树然后倍增维护每个点往前走2的次幂到达哪,以及需要的路程为多少。
具体实现是这样的,我们首先按照站点倒序的顺序进行处理,那么显然每个点离它最近的那个点一定是它高度值的前驱或者后继(如果存在的话),接下来我们考虑每个点的次近点,比如最近点为前驱,那么显然次近点为前驱的前驱或者后继,而如果最近点为后继,则次近点为后继的后继或者前驱。
所以我们可以花O(n log n)的时间处理完成每个点的最近点及次近点。
接下来由于我们已经有了每个点可以到达的最近点及次近点,那么我们可以处理出每个点走2的次幂以后,A走过的路程为多少,B走过的路程为多少,以及此时所在的位置。
2012年IMO国际数学奥林匹克试题解答第一题设J是三角形ABC顶点A所对旁切圆的圆心. 该旁切圆与边BC相切于点M, 与直线AB和AC分别相切于点K和L. 直线LM和BJ相交于点F, 直线KM与CJ相交于点G. 设S是直线AF和BC的交点, T是直线AG和BC的交点. 证明: M是线段ST的中点.2012年IMO国际数学奥林匹克试题第一题解答: 因为∠JFL=∠JBM−∠FMB=∠JBM−∠CML=12(∠A+∠C)−12∠C=12∠A=∠JAL,所以A、F、J、L四点共圆. 由此可得AF⊥FJ, 而BJ是∠ABS的角平分线, 于是三角形ABS的角平分线与高重合, 从而AB=BS; 同理可得AC=CT.综上, 有SM=SB+BM=AB+BK=AK=AL=AC+CL=CT+CM=MT,即M是线段ST的中点.第二题设n⩾3, 正实数a2,a3,⋯,a n满足a2⋅a3⋅⋯⋅a n=1, 证明:(a2+1)2(a3+1)3⋯(a n+1)n>n n.解答:由均值不等式, 我们有(a k+1)k=⩾(a k+1k−1+⋯+1k−1)k(ka k⋅(1k−1)k−1−− − − − − − − − − − −−√k)k=k k(k−1)k−1a k,当a k=1k−1时等号成立, 其中k=2,3,⋯,n. 于是(a2+1)2(a3+1)3⋯(a n+1)n⩾221a2⋅3322a3⋅⋯⋅n n(n−1)n−1a n=n n.当对任意的k=2,3,⋯,n时, 若恒有a k=1k−1, 此时由n⩾3知a2⋅a3⋅⋯⋅a n=1(n−1)!≠1,因此上述不等式等号不成立, 从而不等式得证.第三题"欺诈猜数游戏" 在两个玩家甲和乙之间进行, 游戏依赖于两个甲和乙都知道的正整数k和n.游戏开始时甲先选定两个整数x和N, 1⩽x⩽N. 甲如实告诉乙N的值, 但对x 守口如瓶. 乙现在试图通过如下方式的提问来获得关于x的信息: 每次提问, 乙任选一个由若干正整数组成的集合S(可以重复使用之前提问中使用过的集合), 问甲"x是否属于S?". 乙可以提任意数量的问题. 在乙每次提问之后, 家必须对乙的提问立刻回答"是" 或"否", 甲可以说谎话, 并且说谎的次数没有限制, 唯一的限制是甲在任意连续k+1次回答中至少又一次回答是真话.在乙问完所有想问的问题之后, 乙必须指出一个至多包含n个正整数的集合X, 若x属于X, 则乙获胜; 否则甲获胜. 证明:(1) 若n⩾2k, 则乙可保证获胜;(2) 对所有充分大的整数k, 存在正整数n⩾1.99k, 使得乙无法保证获胜.解答: (1)可以认为n=2k,N=n+1. 采用二进制.把1,2,…,2k都写成二进制: a1a2…a k+1¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯, 这里a i(i=1,2,…,k+1)是0或者1; 然后, 记T为这2k个二进制数组成的集合. 2 k+1的二进制表示是100…01¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ .令S1={100…0¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ },S i={a1a2…a k+1¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯¯ ¯ ¯ ¯∈T|a1=0,a i=1},i=2,3,…,k+1,也就是说, S i就是T中所有满足a i=1的元素组成的子集(i=1,2,…,k+1).乙采用如下问题, 可保证获胜: 第一次提问, 选择S1, 并且接下来也一直选取S 1, 甲的回答会出现两种情况:▪连续k+1次回答“否”, 则100…0¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯可以排除;▪在至多k+1次回答中, 一旦出现”是”, 乙接下来的k次提问, 依次选取S2,S3,…,S k+1, 就取得胜利. 事实上, 若甲最后的k次回答都是”是”, 则x∈T; 若甲最后的k次回答有一些是”否”, 则x绝对不可能是a1a2…ak+1¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯, 这里a1=0, a i=0还是1取决于甲对S i的答案: 若甲的回答是”是”, a i=0, 否则a i=1(i=2,3,…,k+1). (2). 先将问题转化成等价形式: 甲从集合S中取定一个元素x(|S|=N), 乙提出一系列的问题. 乙的第j个问题题就是取S的子集D j, 随后甲选取集合P j∈{D j,D c j}, 使得对任意的j⩾1都有x∈P j∪P j+1∪⋯∪P j+k,当乙提完他想问的一系列问题后, 如果乙能选取一个集合X满足|X|⩽n, 使得x∈X, 那么乙获胜; 否则甲获胜.解答1. 任取实数p使得2>p>1.99, 再选取正整数k0, 使得当k>k0时(2−p)p k+1−1.99k>1.设N使得(2−p)p k+1>N>1.99k. 我们来证明, 若|S|=N, 不妨S={1,2,…,N}, 甲有办法使乙无法胜利.记D j是乙的第j个问题展示的集合, 定义P j为D j或者D C j, 取决于甲对D j的答案: 若甲的回答是”是”, P j=D j, 否则P j=D C j; 再记P0=S. 定义A j如下:A j=A j(P j)=a0+pa1+p2a2+⋯+p j a j,这里a0=∣∣P j∣∣,a i=∣∣P j−i∖(P j∪P j−1∪⋯∪P j−i+1)∣∣(i=1,2,…,j).此时∑i=0j a i=N.注意A0=N.我们指出, 甲可以使得N2−p>A j成为事实: N2−p>A0=N.假设已有N2−p>A j, 甲可选取P j+1∈{D j+1,D C j+1}使得N2−p>A j+1. 事实上,A j+1(D j+1)=b0+pb1+p2b2+…+p j b j+p j+1b j+1,A j+1(D C j+1)=c0+pc1+p2c2+…+p j c j+p j+1c j+1.注意b0+c0=N,b i+c i=a i−1(i=1,2,…,j+1),于是A j+1(D j+1)+A j+1(D C j+1)=N+p(a0+pa1+p2a2+…+p j a j)<N+p⋅N2−p,因之min{A j+1(D j+1),A j+1(D C j+1)}<N2+p2⋅N2−p=N2−p.于是, 可以选取P j+1∈{D j+1,D C j+1}达到我们的要求.既然p k+1>N2−p>A j, 那么, 只要i⩾k+1,必定a i=0,这导致乙无法排除S的任何一个元素, 不能取得胜利.解答2. 记p,q是满足2>q>p>1.99的实数, 选取正整数k0使得(p q)k0⩽2(1−q2),p k0−1.99k0>1.我们来指出, 对任意k⩾k0, 若|S|∈(1.99k,p k), 那么甲有策略, 通过回答”是”或者”否”, 使得下式对所有j∈N成立:P j∪P j+1∪⋯∪P j+k=S,这里P i是D i或者D C i, 取决于甲对D i的答案: 若甲的回答是”是”, P i=D i, 否则P i=D C i; D i是乙的第i个问题所问的集合(i∈N).假定S={1,2,…,N}. 定义(x)∞j=0=(x j1,x j2,…,x j N)如下: x01=x02=⋯=x0 N=1; P0=S, 在P j+1选定之后, 定义x j+1:x j+1i={1,qx j i,i∈P j+1,i∉P j+1.(1)只要甲使得成立x j i⩽q k(1⩽i⩽N,j⩾1), 那么乙就不能取得胜利. 记T(x)=∑i=1N x i, 甲只要使得T(x j)⩽q k(j⩾1)即可. 这是可以做到的: 显而易见的事情是, T(x0)=N⩽p k<q k. 假设已有T(x j)⩽q k, 甲可以就乙的D j+1选取P j+1∈{D j+1,D C j+1}使得T(x j+1)⩽q k. 假定甲回答”是”, 此时P j+1=D j+1, 记y是根据(1)得到的序列; 相应地, 记z是甲回答”否”, P j+1=D C j+1, 根据(1)得到的序列. 于是T(y)=∑i∈D C j+1qx j i+∣∣D j+1∣∣,T(z)=∑i∈D j+1qx j i+∣∣D C j+1∣∣.因此T(y)+T(z)=q⋅T(x j)+N⩽q k+1+p k,根据选取的k0的性质, 得min{T(y),T(z)}⩽q2⋅q k+p k2⩽q k.第四题求所有的函数f:Z→Z使得对任意满足a+b+c=0的整数a,b,c恒有f(a)2+f(b)2+f(c)2=2f(a)f(b)+2f(b)f(c)+2f(c)f(a).解答: 令a=b=c=0可得3f(0)2=6f(0)2, 这说明f(0)=0. 现在我们令b=−a, c=0可得到f(a)2+f(−a)2=2f(a)f(−a)即(f(a)−f(−a))2, 于是f(a)=f(−a), 即f(n)为偶函数.假设对某个整数a使得f(a)=0, 则对任意整数b我们有a+b+(−a−b)=0, 因此f(a)2+f(b)2+f(a+b)2=2f(b)f(a+b),这等价于(f(b)−f(a+b))2=0, 即f(a+b)=f(b). 因此对某个整数a使得f(a)=0时, f是一个以a为周期的函数.令b=a及c=−2a代入题目条件中的等式f(2a)⋅(f(2a)−4f(a))=0. 取a=1我们得到f(2)=0或f(2)=4f(1).如果f(2)=0, 那么f以 2 为周期, 对任意奇数n有f(n)=f(1). 容易验证对任意的c∈Z函数f(x)={0,c,2∣n,2∤n满足题目条件.现在假设f(2)=4f(1)并且f(1)≠0. 如果对任意的整数n都有f(n)=n2⋅f(1)成立,那么此时问题解决了. 如果存在整数n使得f(n)≠n2f(1), 由于f是偶函数, 不妨将n看做自然数, 那么显然n⩾3, 我们设n是使得f(n)≠n2f(1)的最小的正整数.令a=1, b=n−1, c=−n代入可得f(1)2+(n−1)4f(1)2+f(n)2=2(n−1)2f(1)2+2((n−1)2+1)f(n)f(1)即(f(n)−(n)2f(1))⋅(f(n)−(n−2)2f(1))=0,由假设可得此时f(n)=(n−2)2f(1).令a=n, b=2−n, c=−2代入可得2(n−2)4f(1)2+16f(1)2=2⋅4⋅2(n−2)2f(1)2+2⋅(n−2)4f(1),这说明(n−2)2=1即n=3. 因此f(3)=f(1). 令a=1, b=3, c=4(因为f为偶函数, 所以条件改成c=a+b时仍然成立)代入可得f(4)2=4f(4)f(1), 即f(4)=0或f(4)=4f(1)=f(2).如果f(4)≠0, 令a=2, b=2, c=4代入可得f(2)2+f(2)2+f(4)2=2f(2)2+4f(2)f(4),即f(4)=4f(2). 又因为我们已经推得f(4)=f(2), 这说明f(2)=0, 矛盾. 因此f(4)=0, 从而f以4 为周期. 于是f(4k)=0, f(4k+1)=f(4k+3)=c, 以及f(4k+2)=4c, 容易验证这个解满足题目条件.综上所述, 函数方程的解为: f(x)=cx2, 其中c∈Z; f(x)={0,c,2∣n,2∤n其中c ∈Z; 以及f(x)=⎧⎩⎨⎪⎪ 0,c,4c,4∣n,2∤n,n≡2 (mod 4)其中c∈Z.第五题已知三角形ABC中, ∠BAC=90∘, D是过顶点C的高的垂足. 设X是线段CD内部一点. K是线段AX上一点, 使得BK=BC. L是线段BX上一点, 使得AL=AC. 设M是AL与BK的交点. 证明: MK=ML.2012年IMO国际数学奥林匹克试题第五题解答: 因为AL2=AC2=AD⋅AB, 所以△ALD和△ABL相似, 因此∠ALD=∠XBA.设R是射线DC上一点, 使得DX⋅DR=BD⋅AD. 由于∠BDX=∠RDA=90∘我们可以推得△RAD∼△BXD, 因此∠XBD=∠ARD, 从而∠ALD=∠ARD 即R, A, D, 和L四点共圆. 这说明∠RLA=90∘, 于是RL2=AR2−AL2=AR2−AC2. 类似地, 我们可以得到RK2=BR2−BC2和∠RKB=90∘. 因为RC⊥AB我们有AR2−AC2=BR2−BC2, 因此RL2=RK2即RL=RK.又因为∠RLM=∠RKM=90∘我们可以推得MK2=RM2−RK2=RM2−RL2=ML2,从而MK=ML.第六题求所有正整数n, 使得存在非负整数a1,a2,⋯,a n, 满足12a1+12a2+⋯+12a n=13a1+23a2+⋯+n3a n=1.解答: 所求n≡1,2(mod4). 设M=max{a1,a2,⋯,a n}, 则有3M=∑k=1n k⋅3M−a k≡∑k=1n k=n(n+1)2(mod2),所以n(n+1)2是奇数, 从而n≡1,2(mod4).若对奇数n=2m+1, 此时存在非负整数序列(a1,a2,⋯,a n)使得12a1+12a2+⋯+12a n=13a1+23a2+⋯+n3a n=1.注意到12a m+1=12a m+1+1+12a m+1+1,m+13a m+1=m+13a m+1+1+2(m+1)3a m+1+1=m+13a m+1+1+n+13a m+1+1.因此此时对n+1, 可以验证(a1,a2,⋯,a m,a m+1+1,a m+2,⋯,a n,a m+1+1)为满足题意的序列. 这说明对奇数n若满足题目条件, 则n+1也满足题目条件.剩下的问题只要解决n=4m+1时的构造问题即可.设序列(a1,a2,⋯,a2k+1)是(1,2,⋯,2k+1)的一个排列, 设G=(1,2,⋯,2k,2k), 用g i表示它的分量.定义D(X)=∑i=12k+1a i3g i, 由于∑i=12k+112g i=1, 所以我们只要求出一个排列X使得D(X)=1, 问题就解决了. 令X=(2,1,4,3,6,5,...,2k,2k−1,2k+1), 用归纳法可算得此时D(X)=1+k32k.现在假设上面的k是正偶数, 即k=2m, 则X=(2,1,4,3,...,2m,2m−1,2m+2,2m+1,...,4m,4m−1,4m+1),定义Y=(2,1,4,3,...,2m,2m−1,2m+1,...,4m,4m−1,4m+1,2m+2),即将X的第2m+1个分量移动到最后形成的. 简单计算可得D(X)−D(Y)=2m3 4m, 所以D(Y)=1. 当k=0时, 此时取a1=0时即可. 这说明n=4m+1时的构造问题已经解决.综上所述, 要求的为满足n≡1,2(mod4)的正整数.。
CCF全国信息学奥林匹克联赛(NmP2012)复赛提高组day22. 1 ·同余方程〖问题描述〗求关于的同余方程三1 (mod句的最小正整数解。
输入〗输入文件为mod.ino输入只有一行,包含两个正整数用一个空格隔开输出〗输出文件为mod.outo输出只有一行,包含一个正整数№即最小正整数解。
输入数据保证一定有解。
〖输入输出样例〗对于40%的数据,2 L000:对于60%的数据,2 50,000,000:对于100%的数据,2,2,000,000,000。
2 ·借教室 (classroom. cpp/c/pas)问题描述〗在大学期间,经常需要租借教室。
大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。
教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。
面对海量租借教室的信息,我们自然希望编程解决这个问题。
我们需要处理接下来n天的借教室信息,其中第i天学校有个教室可供租借。
共有m份订单,每份订单用三个正整数描述,分别为d],斗t},表示某租借者需要从第丬天到第t]天租借教室(包括第丬天和第t)天),每天需要租借dj个教室。
我们假定,租借者对教室的大小、地点没有要求。
即对于每份订单,我们只需要每天提供d]个教室,而它们具体是哪些教室,每天是否是相同的教室则不用考虑。
借教室的原则是先到先得,也就是说我们要按照订单的先后顺序依次为每份订单分配教室。
如果在分配的过程中遇到一份订单无法完全满足,则需要停止教室的分配,通知当前申请人修改订单。
这里的无法满足指从第丬天到第t)天中有至少一天剩余的教室数量不足d)个。
现在我们需要知道,是否会有订单无法完全满足。
如果有,需要通知哪一个申请人修改输入〗输入文件为classroom.in第一行包含两个正整数n,m,表示天数和订单的数量。
第二行包含n个正整数,其中第i个数为ri,表示第i天可用于租借的教室数量。
接下来有m行,每行包含三个正整数dJ,s],t],表示租借的数量,租借开始、结束分别在第几天。
2012年蓝桥杯比赛题目及答案考生须知:●考试时间为4小时。
●参赛选手切勿修改机器自动生成的【考生文件夹】的名称或删除任何自动生成的文件或目录,否则会干扰考试系统正确采集您的解答。
●参赛选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等身份信息或其它与竞赛题目无关的内容,否则成绩无效。
●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”,总计100分。
结果填空:2+3+5+6 = 16分代码填空:8+6+10 = 24 分程序设计:15+17+28 = 60分结果填空要求参赛选手根据题目描述直接填写结果。
求解方式不限。
不要求源代码。
把答案存入【考生文件夹】下对应题号的“解答.txt”中即可。
代码填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不超过一条语句(即中间不能出现分号)。
把填空的答案(仅填空处的答案,不包括题面已存在的代码)存入【考生文件夹】下对应题号的“解答.txt”中即可。
编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。
考生的程序只有能运行出正确结果的时候才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
对每个编程题目,要求考生把所有函数写在一个文件中。
调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
代码中允许使用STL类库,但不能使用MFC或A TL等非ANSI c++标准的类库。
例如,不能使用CString类型(属于MFC类库)。
1.结果填空(满分2分)造成高房价的原因有许多,比如土地出让价格。
既然地价高,土地的面积必须仔细计算。
遗憾的是,有些地块的形状不规则,比如是如图中所示的五边形。
day1 T1:Vigenère 密码(vigenere.cpp/c/pas)【问题描述】16世纪法国外交家Blaise de Vigenère 设计了一种多表密码加密算法——Vigenère 密码。
Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。
在密码学中,我们称需要加密的信息为明文,用M 表示;称加密后的信息为密文,用C 表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k 。
在Vigenère 密码中,密钥k 是一个字母串,k=k 1k 2…k n 。
当明文M=m 1m 2…m n 时,得到的密文C=c 1c 2…c n ,其中c i =m i ®k i ,运算®的规则如下表所示:【输入】输入文件名为vigenere.in 。
输入共2行。
第一行为一个字符串,表示密钥k ,长度不超过100,其中仅包含大小写字母。
第二行为一个字符串,表示经加密后的密文,长度不超过1000,其中仅包含大小写字母。
®【输出】输出文件名为vigenere.out。
输出共1行,一个字符串,表示输入密钥和密文所对应的明文。
对于100%的数据,输入的密钥的长度不超过100,输入的密文的长度不超过1000,且都仅包含英文字母。
day1 T2:国王游戏(game.cpp/c/pas)【问题描述】恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。
首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。
然后,让这n位大臣排成一排,国王站在队伍的最前面。
排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。
国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。
2020信息学奥赛第一单元计算机基础知识测试1. (NOIP 2017普及组选择题)计算机应用的最早领域是( )。
A、数值计算(正确答案)B、人工智能C、机器人D、过程控制答案解析:[分析]数值计算是指利用计算机来完成科学研究和工程技术中提出的数学问题的计算,是计算机应用的最早领域。
2. (NOIP2012提高组选择题)1946年诞生于美国宾夕法尼亚大学的ENIAC属于()计算机。
A、电子管(正确答案)B、晶体管C、集成电路D、超大规模集成电路3. (2011普及组选择题)从ENIAC到当前最先进的计算机,冯.诺依曼体系结构始终占有重要地位。
冯.诺依曼体系结构的核心内容是()。
A、采用开关电路B、采用半导体器件C、采用存储程序和程序控制原理(正确答案)D、采用键盘输人4. (2019CSP-选择题)以下哪个奖项是计算机科学领域的最高奖? ()A、图灵奖(正确答案)B、鲁班奖C、诺贝尔奖D、普利策奖5. (2008普及组选择题)在下列关于图灵奖的说法中,不正确的是( )。
A、图灵奖是美国计算机协会于1966年设立的,专门奖励那些对计算机事业做出重要贡献的个人B、图灵奖有“计算机界诺贝尔奖”之称C、迄今为止,还没有华裔计算机科学家获此殊荣(正确答案)D、图灵奖的名称取自计算机科学的先驱、英国科学家阿兰.图灵6. (2006普及组选择题)在下面各世界顶级的奖项中,为计算机科学与技术领城做出杰出贡献的科学家设立的奖项是( )A、沃尔夫奖B、诺贝尔奖C、菲尔兹奖D、图灵奖(正确答案)7. (2018普及组选择题)以下哪种设备属于输出设备? ()A、扫描仪B、键盘C、鼠标D、打印机(正确答案)8. (2016普及组选择题)以下不是CPU生产厂商的是( )。
A、IntelB、 AMDC、Microsoft(正确答案)D、IBM9. (2015普及组选择题)在PC机中,PENTIUM(奔腾)、酷睿、赛扬等是指()A、生产厂家名称B、硬盘的型号C、CPU的型号(正确答案)D、显示器的型号10. (2015普及组选择题)所谓的“中断”是指( )。