8.noip2014试题
NOIP2014提高组复赛试题day1day2

CCF全国信息学奥林匹克联赛(NOIP2014复赛提高组dayl1.生活大爆炸版石头剪刀布(rps.cpp/c/pas)【问题描述】石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。
如果两个人出拳样,则不分胜负。
在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。
升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:斯波克:《星际迷航》主角之一。
蜥蜴人:《星际迷航》中的反面角色。
这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。
现在,小A和小B尝试玩这种升级版的猜拳游戏。
已知他们的出拳都是有周期性规律的,但周期长度不一定相等。
例如:如果小A以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为6的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-……”,而如果小B以“剪刀-石头-布-斯波克-蜥蜴人”长度为5的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-……”已知小A和小B一共进行N次猜拳。
每一次赢的人得1分,输的得0分;平局两人都得0分。
现请你统计N次猜拳结束之后两人的得分。
【输入】输入文件名为rps.in。
第一行包含三个整数:N,NANB分别表示共进行N次猜拳、小A出拳的周期长度,小B出拳的周期长度。
数与数之间以一个空格分隔。
第二行包含NA个整数,表示小A出拳的规律,第三行包含NB个整数,表示小B出拳的规律。
其中,0表示“剪刀”,1表示“石头”,2表示“布”,3表示“蜥蜴人”,4表示“斯波克”。
数与数之间以一个空格分隔。
【输出】输出文件名为rps.out。
输出一行,包含两个整数,以一个空格分隔,分别表示小A、小B的得分。
【数据说明】对于100%勺数据,0<N<200,0<NA&200,0<NB&200。
2.联合权值(link.cpp/c/pas)【问题描述】无向连通图G有n个点,n-1条边。
noip2014普及组初赛试题+答案

NOIP 2014 第二十届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2014 年10月11日14:30〜16:30选手注意:1、 试题纸共有 5页,答题纸共有 2页,满分100分。
请在答题纸上作答,写在试题 纸上的一律无效。
2、 不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将没有程序编译成目标程序6. CPU 、存储器、 A.接口 B.总线 C.控制线7•断电后会丢失数据的存储器是 A.RAM B.ROM C.硬盘8•以下哪一种是属于电子邮件收发的协议12•下列几个32位IP 地址中,书写错误的是 ( )。
A.162.105.135.27B.192.168.0.1C.256.256.129.1 13•要求以下程序的功能是计算: s=1+1/2+1/3+...+1/10 #in elude <iostream>一、单项选择题(共20题,每题1.51.以下哪个是面向对象的高级语言(A.汇编语言B.C++C.Fortran2. 1TB 代表的字节数是()。
A.2的10次方 B.2的20次方分,共计 )。
D.Basic30分;每题有且仅有一个正确选项 )C.2 的 30 的和是( A.00101000B.001010100C.010001014•以下哪一种设备属于输出设备( )。
A.扫描仪B.键盘C.鼠标D.打印机5•下列对操作系统功能的描述最为完整的是 ( 次方 D.2的40次方)。
D.00111001I/O 设备是通过()连接起来的。
D.系统文件 (A.SMT PB.UD PC.P2PD.FT P9•下列选项中不属于图像格式的是(A.JPEG 格式B.TXT 格式C.GIF 10.链表不具有的特点是( A.不必事物估计存储空间 C.插入删除不需要移动元素11•下列各无符号十进制整数中,A.296B.133C.256 )。
noip2014普及组复赛题解

1.珠心算测验注意看清题意:其中有多少个数,恰好等于集合中另外两个(不同的)数之和。
这样的题意加上100的规模,建议暴力3个for:#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int n;int a[105];int main(){freopen("count.in","r",stdin);freopen("count.out","w",stdout);scanf("%d",&n);for(int i=1; i<=n; i++){scanf("%d",&a[i]);}sort(a+1,a+n+1);int res=0;for(int i=1; i<=n; i++){int ok=0;for(int j=1; j<=n && !ok; j++) if(j!=i){for(int k=1; k<=n && !ok; k++) if(a[k]!=a[j]){if(a[j]+a[k]==a[i]) ok=1;}}res+=ok;}printf("%d\n",res);return 0;}2.比例简化L很小,还是枚举,然后比较的话建议用乘法比较,避免精度问题:#include<cstdio>#include<cstring>#include<iostream>using namespace std;int A,B,L;int gcd(int a,int b){if(b==0) return a;return gcd(b,a%b);}int main(){freopen("ratio.in","r",stdin);freopen("ratio.out","w",stdout);scanf("%d%d%d",&A,&B,&L);int ba=1000000,bb=1;for(int i=1; i<=L; i++){for(int j=1; j<=L; j++){if(gcd(i,j)==1 && i*B>=j*A){if(ba*j>=bb*i){ba=i, bb=j;}}}}printf("%d %d\n",ba,bb);return 0;}3.螺旋矩阵没一圈的数量有规律的,最外面一圈(n-1)*4,然后每往里n-2,直到后要么只有一个点,要么4个点。
2014年NOIP信息学奥林匹克初赛试题和答案(普及组C++语言)

第二十届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题2014年一、快单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)⒈以下哪个是面向对象的高级语言( )。
A.汇编语言B.C++C.FortranD.Basic⒉1TB代表的字节数是( )。
A.2的10次方B.2的20次方C.2的30次方D.2的40次方⒊二进制数00100100和00010101的和是( )。
A.00101000B.001010100C.01000101D.00111001⒋以下哪一种设备属于输出设备( )。
A.扫描仪B.键盘C.鼠标D.打印机⒌下列对操作系统功能的描述最为完整的是( )。
A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将没有程序编译成目标程序⒍CPU、存储器、I/O设备是通过( )连接起来的。
A.接口B.总线C.控制线D.系统文件⒎断电后会丢失数据的存储器是( )。
A.RAMB.ROMC.硬盘D.光盘⒏以下哪一种是属于电子邮件收发的协议( )。
A.SMTPB.UDPC.P2PD.FTP⒐下列选项中不属于图像格式的是( )。
A.JPEG格式B.TXT格式C.GIF格式D.PNG格式⒑链表不具有的特点是( )。
A.不必事物估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比⒒下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( )。
A.296B.133C.256D.199⒓下列几个32位IP地址中,书写错误的是( )。
A.162.105.135.27B.192.168.0.1C.256.256.129.1D.10.0.0.1⒔要求以下程序的功能是计算:s=1+1/2+1/3+...+1/10。
#include <iostream>using namespace std;int main(){int n;float s;s = 1.0;for(n = 10; n > 1; n--)s = s + 1 / n;cout << s << endl;return 0;}程序运行后输出结果错误,导致错误结果的程序行是( )。
noip2014普及组初赛试题+答案

NOIP2014第二十届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2014年10月11日14:30~16:30选手注意:1、试题纸共有5 页,答题纸共有2 页,满分100 分。
请在答题纸上作答,写在试题纸上的一律无效。
2、不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)⒈以下哪个是面向对象的高级语言( )。
A.汇编语言B.C++C.FortranD.Basic⒉1TB代表的字节数是( )。
A.2的10次方B.2的20次方C.2的30次方D.2的40次方⒊二进制数00100100和00010101的和是( )。
A.00101000B.001010100C.01000101D.00111001⒋以下哪一种设备属于输出设备( )。
A.扫描仪B.键盘C.鼠标D.打印机⒌下列对操作系统功能的描述最为完整的是( )。
A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将没有程序编译成目标程序⒍CPU、存储器、I/O设备是通过( )连接起来的。
A.接口B.总线C.控制线D.系统文件⒎断电后会丢失数据的存储器是( )。
A.RAMB.ROMC.硬盘D.光盘⒏以下哪一种是属于电子邮件收发的协议( )。
A.SMTPB.UDPC.P2PD.FTP⒐下列选项中不属于图像格式的是( )。
A.JPEG格式B.TXT格式C.GIF格式D.PNG格式⒑链表不具有的特点是( )。
A.不必事物估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比⒒下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( )。
A.296B.133C.256D.199⒓下列几个32位IP地址中,书写错误的是( )。
A.162.105.135.27B.192.168.0.1C.256.256.129.1D.10.0.0.1⒔要求以下程序的功能是计算:s=1+1/2+1/3+...+1/10。
2014noip普及组复赛测试(答案)

老师给笑笑布置了一份作业,笑笑不知如何解决。
老师给了一串很长的数列,要求从中找出连续的一段来使的总和最大。
【输入文件】:第一行包含一个整数n,表示数列的长度。
(n<=100000)第二行包含n个整数来描述这个数列,每个整数的的绝对值不超过1000。
【文件输出】:文件中只有一个整数,为最大的连续段总和。
【输入样例】:51 -23 1 -4【输出样例】4vars:array[1..10000] of longint;n,ii,t,ans:longint;beginreadln(n);for i:=1 to n doread(s[i]);t:=s[1];ans:=s[1];for i:=2 to n dobeginif t<0 then t:=s[i] else t:=t+s[i];if t>ans then ans:=t;end;writeln(ans);end.输入61 5 4 -2 63 输出17输入1024 -12 9 11 7 20 -8 15 3 18 输出87输入710 8 9 -5 12 6 11 输出51输入205 12 19 20 -7 -6 18 22 19 8 11 33 15 32 17 -30 4 14 24 -13输出230【问题描述】鲁宾逊先生有一只宠物猴,名叫多多。
这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。
鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。
在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。
有经验的多多一眼就能看出,每棵花生植株下的花生有多少。
为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;然后再找出剩下的植株里花生最多的,去采摘它的花生;依此类推,不过你一定要在我限定的时间内回到路边。
”我们假定多多在每个单位时间内,可以做下列四件事情中的一件:1)从路边跳到最靠近路边(即第一行)的某棵花生植株;2)从一棵植株跳到前后左右与之相邻的另一棵植株;3)采摘一棵植株下的花生;4)从最靠近路边(即第一行)的某棵花生植株跳回路边。
NOIP2014普及组解析

#include <stdio.h>
int delnum(char *s) {
int i, j;
j = 0;
for (i = 0; s[i] != '\0'; i++)
if (s[i] < '0'(1)s[i] > '9') {
s[j] = s[i];
(2);
}
return(3);
}
const int SIZE = 30;
return 0;
}
程序导致错误结果的程序行是()。
A. s = 1.0;B. for (n = 10; n > 1; n--)
C. s = s + 1 / n;D. printf("%6.4f\n", s);
答案:C
解析:1/n,/两边均为整型数,表示“整除”。
14.设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是()。
if (n == 1)
return 1;
if (n == 2)
return 2;
return fun(n - 2) - fun(n - 1);
}
int main() {
int n;
scanf("%d", &n);
printf("%d\n", fun(n));
return 0;
}
输入:7
输出:_________
if (p[i] == 1)
tot++;
cn = i * 2;
while (cn <= n) {
noip2014(简单题)全解

现在,小 A 和小 B 尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有 周期性规律的,但周期长度不一定相等。例如:如果小 A 以“石头-布-石头 -剪刀-蜥蜴人-斯波克”长度为 6 的周期出拳,那么他的出拳序列就是“石 头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克……”,而如果小 B 以“剪刀-石头-布-斯波克-蜥蜴人”长度为 5 的周期 出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布 -斯波克-蜥蜴人-……” 已知小 A 和小 B 一共进行 N 次猜拳。每一次赢的人得 1 分,输的得 0 分; 平局两人都得 0 分。现请你统计 N 次猜拳结束之后两人的得分。
i=1; j=1;
if((b[j]==2)||(b[j]==3)) if(b[j]==0) sum++; continue; } if(a[i]==1) { if((b[j]==0)||(b[j]==3)) if(b[j]==1) sum++; continue;
sa++;
sa++;
} if(a[i]==2) {
பைடு நூலகம்
现在政府有关部门准备安装一个传播参数为 d 的无线网络发射器,希望你帮
助他们在城市内找出合适的路口作为安装地点,使得覆盖的公共场所最多。
简单说下坑
菜比思路就是纯暴力,枚举每个能放发射器的地方然后看
哪一个覆盖的公共场所最多。怎么求每个位置的覆盖公共 场所数这里,可以在读入公共场所的位置的时候就把能覆 盖这个公共场所的位置求一下,位置上的覆盖数++;也可 以枚举每个位置时再用双重循环找它的覆盖范围内的公共 场所数。不管怎么玩应该都不会超时。 很多人没有AC,因为这道题有坑。很多人拿了60、70、 80分。 但是英勇的大哥AC了! 坑就是街道是编号为0-128的129条,枚举的边界虽然在这 里面,但是加上了覆盖范围之后就可能数组越界。必须判 断在不在范围内。 仁慈的出题人没有让覆盖范围是圆形。。。幸好是方形。
NOIP2014(第二十届)初赛普及组C语言试题及答案

第二十届全国青少年信息学奥林匹克联赛初赛普及组C语言试题竞赛时间:2014年10月12日14:30~16:30选手注意:试题纸共有8页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)1. 以下哪个是面向对象的高级语言()。
A. 汇编语言B. C++C. FortranD. Basic2. 1TB代表的字节数量是()。
A. 2的10次方B. 2的20次方C. 2的30次方D. 2的40次方3. 二进制数00100100和00010101的和是()。
A. 00101000B. 001010100C. 01000101D. 001110014. 以下哪一种设备属于输出设备()。
A. 扫描仪B. 键盘C. 鼠标D. 打印机5. 下列对操作系统功能的描述最为完整的是()。
A. 负责外设与主机之间的信息交换B. 负责诊断机器的故障C. 控制和管理计算机系统的各种硬件和软件资源的使用D. 将源程序编译成目标程序6. CPU、存储器、I/O设备是通过()连接起来的。
A. 接口B. 总线C. 控制线D. 系统文件7. 断电后会丢失数据的存储器是()。
A.RAMB. ROMC. 硬盘D. 光盘8. 以下哪一种是属于电子邮件收发的协议()。
A. SMTPB. UDPC. P2PD. FTP9. 下列选项中不属于图像格式的是()。
A. JPEG格式B. TXT格式C. GIF格式D. PNG格式10. 链表不具有的特点是()。
A. 不必事先估计存储空间B. 可随机访问任一元素C. 插入删除不需要移动元素D. 所需空间与线性表长度成正比11. 下列各无符号十进制整数中,能用八位二进制表示的数中最大的是()。
A. 296B. 133C. 256D. 19912. 下列几个32位IP地址中,书写错误的是()。
noip2014(简单题)

(菜比版代码)
高端代码
by:郑懿鸣
const int
dy[5][5]={{0,0,1,1,0},{1,0,0,1,0},{0,1,0,0,1},{0,0,1,0,1},{1,1,0,0, 0}}; 学长为神马只拿60呢? int N,NA,NB,a[220],b[220]; int suma=0,sumb=0; 因为3%3=0!=3 //开一个数组记录每种情况的得分 cin>>N>>NA>>NB; for(int i=1;i<=NA;i++)scanf("%d",&a[i]); for(int i=1;i<=NB;i++)scanf("%d",&b[i]); for(int i=1;i<=N;i++) { int aa=a[i%NA],bb=b[i%NB]; suma+=dy[aa][bb],sumb+=dy[bb][aa]; }
这道题AC的只有8个人,用邻接矩阵写过部
分数据的有很多,拿10分的有一部分,但 是更多的是连10分都不会骗或者像mzx一样 觉得自己能A但是最后却拿了0分的人。 我数了数一试第二道图论题AC的只有6人, 其中5个是前五,所以果断把这道题交给了 lzh。 好了结束。
i=1; j=1;
if((b[j]==2)||(b[j]==3)) if(b[j]==0) sum++; continue; } if(a[i]==1) { if((b[j]==0)||(b[j]==3)) if(b[j]==1) sum++; continue;
NOIP2014普及组复赛试题 螺旋矩阵

NOIP2014普及组复赛试题解答3. 螺旋矩阵【问题描述】一个n 行n列的螺旋矩阵可由如下方法生成:从矩阵的左上角(第1行第1列)出发,初始时向右移动:如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。
根据经过顺序,在格子中依次填入1,2,3,…,n2,便构成了一个螺旋矩阵。
现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列的数是多少。
【分析】这是个蛇形填数问题。
如果采用先枚举二维数组再找对应的元素方法,由于1 ≤n ≤30,000,需要建立一个 30,000× 30,000的二维数组,结果会发生数据溢出且超出运行内存上限(128M)。
我们可以采用类似贪吃蛇的方法,让它在N×N个方格内自外向内逐格移动,控制其向右转的方向,并计算其长度。
解法一#include<cstdio>using namespace std;bool pd(int,int) ;int i,j;bool p;int main(){int n,x,y,u,d,l,r,tot=0; // U为上边界,D为下边界,L为左边界,R为右边界;freopen("matrix.in","r",stdin);freopen("matrix.out","w",stdout);scanf("%d%d%d",&n,&i,&j);d=n;r=n;u=1;l=1; //各边界赋初值;x=1;y=0;p=true;while((tot<n*n)&&p){while((y<r)&&p){++y;++tot;pd(x,y);}--r;//在上侧边界上向右移动,当上侧一行的结束时,控制其右边界向左缩一列;while((x<d)&&p){++x;++tot;pd(x,y);}--d;//在右侧边界上向下移动,当右侧一列的结束时,控制其下边界向上缩一行;while((y>l)&&p){--y;++tot;pd(x,y);}++l;//在下侧边界上向左移动,当下侧一行的结束时,控制其左边界向右缩一列;while((x>u+1)&&p){--x;++tot;pd(x,y);}++u;//在左侧边界上向上移动,当左侧一列的结束时,控制其上边界向下缩一行;}printf("%d\n",tot);fclose(stdin);fclose(stdout);return 0;}bool pd(int x,int y) //判断是否到达目的地,如果到达则停止枚举;{if((x==i)&&(y==j))p=false;return p;}解法二:在上一个解法中,如果遇到极端情况时,可能需要枚举达900000000次,这显然太慢了些,我们可以根据贪吃移动的特点对程序进行优化。
学科竞赛-noip2014初赛普及组Pascal试题及答案全解

noip2014初赛普及组Pascal试题及答案全解第二十届全国青少年信息学奥林匹克联赛初赛普及组Pascal语言试题竞赛时间:2014年10月12日14:30-16:30一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)1. 以下哪个是面向对象的高级语言()。
A.汇编语言B. C++ C. Fortran D. Basic2. 1TB代表的字节数量是()。
A. 2的10次方B. 2的20次方C. 2的30次方D. 2的40次方3. 二进制数00100100和00010101的和是()。
A. 00101000B. 001010100C. 01000101D. 001110014. 以下哪一种设备属于输出设备()。
A. 扫描仪B.键盘C.鼠标D.打印机5. 下列对操作系统功能的描述最为完整的是( )。
A负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将源程序编译成目标程序6. CPU、存储器、I/O设备是通过( )连接起来的。
A.接口B.总线C.控制线D.系统文件7. 断电后会丢失数据的存储器是()。
B. ROMC. 硬盘D. 光盘8. 以下哪一种是属于电子邮件收发的协议( ).A. SMTPB. UDPC. P2PD. FTP9. 下列选项中不属于图像格式的是( )。
A. JPEG格式B. TXT格式C. GIF格式D. PNG格式10. 链表不具有的特点是( )。
A. 不必事先估计存储空间B. 可随机访问任一元索C. 插入删除不需要移动元素D. 所储空间与线性表长度成正比11. 下列各无符号十进制整数中,能用八位二进制表示的数中最大的是( )。
A. 296B. 133C. 256D. 19912. 下列几个32位IP地址中,书写错误的是( )。
A. 162.105.142.27B. 192.168.0.1C. 256.256.129.1D. 10.0.0.113. 要求以下程序的功能是计算: s=1+1/2+1/3+...+1/10。
NOIP2014(第二十届)初赛普及组C语言试题及答案

NOIP2014(第二十届)初赛普及组C语言试题及答案第二十届全国青少年信息学奥林匹克联赛初赛普及组C语言试题竞赛时间:2014年10月12日14:30~16:30选手注意:l试题纸共有8页,答题纸共有2页,满分100分。
请在答题纸上作答,写在试题纸上的一律无效。
l不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)1.以下哪个是面向对象的高级语言()。
A.汇编语言B.C++C.FortranD.Basic2.1TB代表的字节数量是()。
A.2的10次方B.2的20次方C.2的30次方D.2的40次方3.二进制数00100100和00010101的和是()。
A.00101000B.001010100C.01000101D.001110014.以下哪一种设备属于输出设备()。
A.扫描仪B.键盘C.鼠标D.打印机5.下列对操作系统功能的描述最为完整的是()。
A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将源程序编译成目标程序6.CPU、存储器、I/O设备是通过()连接起来的。
A.接口B.总线C.控制线D.系统文件7.断电后会丢失数据的存储器是()。
A.RAMB.ROMC.硬盘D.光盘8.以下哪一种是属于电子邮件收发的协议()。
A.SMTPB.UDPC.P2PD.FTP9.下列选项中不属于图像格式的是()。
A.JPEG格式B.TXT格式C.GIF格式D.PNG格式10.链表不具有的特点是()。
A.不必事先估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比11.下列各无符号十进制整数中,能用八位二进制表示的数中最大的是()。
A.296B.133C.256D.19912.下列几个32位IP地址中,书写错误的是()。
[noip 2014]解方程
![[noip 2014]解方程](https://img.taocdn.com/s3/m/6e29a954ae1ffc4ffe4733687e21af45b307fe00.png)
[noip 2014]解方程[NOIP 2014]解方程在计算机科学与信息学竞赛中,NOIP(全国青少年信息学奥林匹克竞赛)是中国最高水平的信息学竞赛之一。
2014年的NOIP中,出现了一道名为“解方程”的题目,考察了参赛选手的数学思维和编程能力。
这道题目要求解一个复杂的方程,具体描述如下:给定一个正整数x(1 ≤ x ≤ 1000000),求满足以下条件的正整数y的最小值:1. y是x的因子之一;2. y的每一位数字都是x的因子之一。
要解决这道题目,首先需要理解题目的意思。
题目中要求找到一个满足条件的正整数y,这个y必须是x的因子之一,并且y的每一位数字都是x的因子之一。
解决这道题目的关键在于如何确定y的取值范围。
根据题目的要求,y必须是x的因子之一,也就是说y可以整除x。
因此,我们可以先遍历x的所有因子,然后再判断每个因子是否满足y的每一位数字都是x的因子之一的条件。
为了找到x的所有因子,我们可以从1到x的开方进行遍历。
对于每个数i,如果x能够整除i,那么i就是x的一个因子。
通过这样的遍历,我们可以找到x的所有因子,并保存在一个列表中。
接下来,我们需要判断每个因子是否满足y的每一位数字都是x的因子之一的条件。
为了实现这个功能,我们可以将每个因子转换为字符串,并遍历字符串的每一位数字。
对于每一位数字,我们需要判断它是否是x的因子之一。
如果所有位数字都是x的因子之一,那么这个因子就满足条件。
通过以上的思路,我们可以编写一个程序来解决这道题目。
首先,我们需要定义一个函数来判断一个数是否是另一个数的因子。
接着,我们可以使用一个循环来遍历x的所有因子,并在循环中使用另一个循环来判断每个因子是否满足条件。
最后,我们可以输出满足条件的最小值。
下面是一个Python语言的示例代码:```pythonimport mathdef is_factor(x, y):if x % y == 0:return Trueelse:return Falsedef solve_equation(x):factors = []for i in range(1, int(math.sqrt(x))+1):if is_factor(x, i):factors.append(i)factors.append(x // i)factors.sort()for factor in factors:if all(str(digit) in str(x) for digit in str(factor)):return factorx = int(input("请输入正整数x的值:"))y = solve_equation(x)print("满足条件的最小值y为:", y)```通过运行以上代码,我们可以输入一个正整数x的值,并得到满足条件的最小值y。
NOIP2014普及组复赛试题讲解c++版本

+
memset(f,127,sizeof(f));
+
for(int j=1;j<=m;j++)
+
for(int i=2;i<=row;i++)
+
w[j]+=abs(a[r[i]][j]-a[r[i-1]][j]);
+
for(int j=1;j<=m;j++)
+
f[1][j]=w[j];
+
for(int j=2;j<=m;j++)
+
for(int k=1;k<j;k++)
+
for(int i=1;i<=m;i++)
+
v[k][j]+=vx[r[i]][k][j];
+ for(int i=2;i<=col;i++)
+ for(int j=i;j<=m;j++)
+
for(int k=i-1;k<=j-1;k++)
+
f[i][j]=min(f[i][j],f[i-1][k]+v[k][j]+w[j]);
+
else
+
{s=s+r-l;
+
if(y==r)
+
{s=s+x-u+1;
break;}
+
else
+
{s=s+d-u;
+
NOIP2014普及组复赛试题解答

NOIP2014普及组复赛试题解答NOIP2014普及组复赛试题解答1.珠心算测验#includeusing namespace std;int main(){freopen("count.in","r",stdin);freopen("count.out","w",stdout);int n;scanf("%d",&n);int a[n+1],j,k,out=0;bool pd=false;for(int i=1;i<=n;++i)scanf("%d",&a[i]);for(int i=1;i<=n;++i){j=1;do{k=1;do{if((i!=j)&&(j!=k)&&(k!=i)&&(a[i]==a[j]+a[k])) {out++;pd=true;}k++;}while(k<=n&&pd==false);j++;}while(j<=n&&pd==false);pd=false;}printf("%d",out);fclose(stdin);fclose(stdout);return 0;}2.比例简化考虑到输出结果必须是最贴近原比值且互质的一对正整数,如果采用除法再取整,则会导致结果偏差较大。
由于1≤L≤100,可以枚举其所有组合,再在枚举结果中取最贴近的那一对正整数。
可以用二维数组的下标来存储A',B'的值,二维数值元素存储A'/B'与A/B的差值。
①读取A、B、L的值;②考虑极端情况B/A>L,当出现此情况时,直接将赋值A'=1;B'=L,以减少计算时间;③枚举所有A'/B'的值,并存储在二维数组元素s[A'][B']中;④求二维数组的最小值;⑤输出A' B'。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全国信息学奥林匹克联赛(NOIP2014)复赛普及组
第2页共6页
1. 珠心算测验
(count.cpp/c/pas)
【问题描述】珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。
珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。
他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?最近老师出了一些测验题,请你帮忙求出答案。
【输入】
输入文件名为count.in。
输入共两行,第一行包含一个整数n,表示测试题中给出的正整数个数。
第二行有n个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。
【输出】
输出文件名为count.out。
输出共一行,包含一个整数,表示测验题答案。
【输入输出样例】 count.in count.out 4 1 2 3 4
2
【样例说明】
由1+2=3,1+3=4,故满足测试要求的答案为2。
注意,加数和被加数必须是集合中的两个不同的数。
【数据说明】
对于100%的数据,3 ≤ n ≤ 100,测验题给出的正整数大小不超过10,000。
第3页共6页
2.比例简化
(ratio.cpp/c/pas)
【问题描述】
在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果。
例如,对某一观点表示支持的有1498人,反对的有902人,那么赞同与反对的比例可以简单的记为1498:902。
不过,如果把调查结果就以这种方式呈现出来,大多数人肯定不会满意。
因为这个比例的数值太大,难以一眼看出它们的关系。
对于上面这个例子,如果把比例记为5:3,虽然与真实结果有一定的误差,但依然能够较为准确地反映调查结果,同时也显得比较直观。
现给出支持人数A,反对人数B,以及一个上限L,请你将A比B化简为A’比B’,要求在A’和B’均不大于L且A’和B’互质(两个整数的最大公约数是1)的前提下,A’/B’≥ A/B 且A’/B’ - A/B的值尽可能小。
【输入】
输入文件名为ratio.in。
输入共一行,包含三个整数A,B,L,每两个整数之间用一个空格隔开,分别表示支持人数、反对人数以及上限。
【输出】输出文件名为ratio.out。
输出共一行,包含两个整数A’,B’,中间用一个空格隔开,表示化简后的比例。
【输入输出样例】 ratio.in ratio.out 1498 902 10 5 3
【数据说明】
对于100%的数据,1 ≤ A ≤ 1,000,000,1 ≤ B ≤ 1,000,000,1 ≤ L ≤ 100,
A/B ≤ L。
第4页共6页
3. 螺旋矩阵
(matrix.cpp/c/pas)
【问题描述】一个n行n列的螺旋矩阵可由如下方法生成:
从矩阵的左上角(第1行第1列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。
根据经过顺序,在格子中依次填入1, 2, 3, ... , n2,便构成了一个螺旋矩阵。
下图是一个n = 4 时的螺旋矩阵。
1 2 3 4 12 13 14 5 11 16 15 6 10
9
8
7
现给出矩阵大小n以及i和j,请你求出该矩阵中第i行第j列的数是多少。
【输入】
输入文件名为matrix.in。
输入共一行,包含三个整数n,i,j,每两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。
【输出】输出文件名为matrix.out。
输出共一行,包含一个整数,表示相应矩阵中第i行第j列的数。
【输入输出样例】 matrix.in matrix.out 4 2 3 14
【数据说明】对于50%的数据,1 ≤ n ≤ 100;
对于100%的数据,1 ≤ n ≤ 30,000,1 ≤ i ≤ n,1 ≤ j ≤ n。
全国信息学奥林匹克联赛(NOIP2014)复赛普及组
第5页共6页
4. 子矩阵
(submatrix.cpp/c/pas)
【问题描述】给出如下定义:
1. 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵。
例如,下面左图中选取第2、4行和第2、4、5列交叉位置的元素得到一个2*3的子矩阵如右图所示。
的其中一个2*3的子矩阵是
2. 相邻的元素:矩阵中的某个元素与其上下左右四个元素(如果存在的话)是相邻的。
3. 矩阵的分值:矩阵中每一对相邻元素之差的绝对值之和。
本题任务:给定一个n行m列的正整数矩阵,请你从这个矩阵中选出一个r行c列的子矩阵,使得这个子矩阵的分值最小,并输出这个分值。
【输入】
输入文件名为submatrix.in。
第一行包含用空格隔开的四个整数n,m,r,c,意义如问题描述中所述,每两个整数之间用一个空格隔开。
接下来的n行,每行包含m个用空格隔开的整数,用来表示问题描述中那个n行m列的矩阵。
【输出】
输出文件名为submatrix.out。
输出共1行,包含1个整数,表示满足题目描述的子矩阵的最小分值。
【输入输出样例1】 submatrix.in submatrix.out 5 5 2 3 9 3 3 3 9 9 4 8 7 4 1 7 4 6 6 6 8 5 6 9 7 4 5 6 1
6
【输入输出样例1说明】
该矩阵中分值最小的2行3列的子矩阵由原矩阵的第4行、第5行与第1列、第3列、
9 3 3 3 9 9 4 8 7 4 1 7 4 6 6 6 8 5 6 9 7
4
5
6
1
4 7 4 8 6 9
全国信息学奥林匹克联赛(NOIP2014)复赛普及组
第6页共6页
第4列交叉位置的元素组成,为
656
756
,其分值为6−5+5−6+7−5+5−6+6−7+5−5 + 6−6=6。
【输入输出样例2】 submatrix.in submatrix.out 7 7 3 3
7 7 7 6 2 10 5 5 8 8 2 1 6 2 2 9 5 5 6 1 7 7 9 3 6 1 7 8 1 9 1 4 7 8 8 10 5 9 1 1 8 10 1 3 1 5 4 8 6
16
【输入输出样例2说明】
该矩阵中分值最小的3行3列的子矩阵由原矩阵的第4行、第5行、第6行与第2列、第6列、第7列交叉位置的元素组成,选取的分值最小的子矩阵为9
789
8858
10
【数据说明】
对于50%的数据,1≤n≤12,1≤m≤12,矩阵中的每个元素1≤aij≤20;对于100%的数据,1≤n≤16,1≤m≤16,矩阵中的每个元素1≤aij≤1000, 1≤r≤n,1≤c≤m。