欢迎来到天天文库
浏览记录
ID:20593888
大小:216.19 KB
页数:25页
时间:2018-10-14
《NOIP普及组初赛历年试题及答案完善题篇.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、NOIP普及组初赛历年试题及答案(完善题篇)完善程序,每年两题,每题每空2-4分,共28分。【解题步骤】1、仔细读题,尤其是题目给你的解题思路:解决什么问题?用的什么算法?输入输出是什么?……2、要知道变量的含义,也可通过变量单词的意思知道,比如sum表示和,que表示队列等等。3、在充分了解前两点的基础上,先根据自己的想法大致想想:如果让你实现程序,你会怎么做。4、通读程序,理顺程序结构,千万不要因为程序很长而觉得气馁,有时程序越长,填空越简单。5、按照程序执行的顺序做,遇到难的先放一边,继续往下做。有些空格很简单,一下就能看出来的。6、到这步为止,程序大概意图就知
2、道了,然后就是填比较难的几格了。这一点就靠你对程序的理解了。7、填完了以后,再执行一遍程序,有样例就结合样例,没样例就自己造数据模拟。【解题技巧】1、变量初始化:这个得结合后面的运算确定,不过有些也很简单,如sum=0之类的。2、for循环初、终值:如果是嵌套的循环,可结合父循环或子循环确定。3、更新最优解:比较或赋值。4、要填的空格与某句对应,这样的例子在下面能找到很多。NOIP2011-1.子矩阵给输入一个n1*m1的矩阵a,和n2*m2的矩阵b,问a中是否存在子矩阵和b相等。若存在,输出所有子矩阵左上角的坐标:若不存在输出“Thereisnoanswer”。#i
3、ncludeusingnamespacestd;constintSIZE=50;intn1,m1,n2,m2,a[SIZE][SIZE],b[SIZE][SIZE];intmain(){inti,j,k1,k2;boolgood,haveAns;cin>>n1>>m1;for(i=1;i<=n1;i++)for(j=1;j<=m1;j++)cin>>a[i][j];cin>>n2>>m2;for(i=1;i<=n2;i++)for(j=1;j<=m2;j++)cin>>b[i][j];haveAns=false;for(i=1;i<=n1-n2+1
4、;i++)for(j=1;j<=m1-m2+1;j++){good=true;for(k1=1;k1<=n2;k1++)for(k2=1;k2<=m2;k2++){if(a[i+k1-1][j+k2-1]!=b[k1][k2])good=false;}if(good){cout<
5、ostream>#includeusingnamespacestd;constintSIZE=200;structhugeint{intlen,num[SIZE];};//其中len表示大整数的位数;num[1]表示个位,num[2]表示十位,以此类推hugeinttimes(hugeinta,hugeintb)//计算大整数a和b的乘积{inti,j;hugeintans;memset(ans.num,0,sizeof(ans.num));for(i=1;i<=a.len;i++)for(j=1;j<=b.len;j++)ans.num[i+j-1]
6、+=a.num[i]*b.num[j];for(i=1;i<=a.len+b.len;i++){ans.num[i+1]+=ans.num[i]/10;ans.num[i]%=10;}if(ans.num[a.len+b.len]>0)ans.len=a.len+b.len;elseans.len=a.len+b.len-1;returnans;}hugeintadd(hugeinta,hugeintb)//计算大整数a和b的和{inti;hugeintans;memset(ans.num,0,sizeof(ans.num));if(a.len>b.len)ans.l
7、en=a.len;elseans.len=b.len;for(i=1;i<=ans.len;i++){ans.num[i]+=a.num[i]+b.num[i];ans.num[i+1]+=ans.num[i]/10;ans.num[i]%=10;}if(ans.num[ans.len+1]>0)ans.len++;returnans;}hugeintaverage(hugeinta,hugeintb)//计算大整数a和b的平均数的整数部分{inti;hugeintans;ans=add(a,b);for(i=ans.len;i>=2;i--){an
此文档下载收益归作者所有