




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息奥赛题库(2011-4-3) -【信息奥赛题库】 编制组打印杨辉三角前10行 标程program yhsj10;var yh:array1.10,0.10 of integer; i,j:integer;begin yh1,1:=1; for i:=2 to 10 do for j:=1 to i do yhi,j:=yhi-1,j+yhi-1,j-1; for i:= 1to 10do begin for j:=1 to i do write(yhi,j, ); writeln; end;End. 2.读入10个数,输出偶数项及它们和,输出奇数项及它们的平均数。 (读入10个数输出偶数项及它们和输出奇数项及它们的平均数) 标程program exe6_1; var i,s,t,n:integer; a:array1.10 of integer;begin for i:=1 to 10 do read(ai); for i:=1 to 10 do if i mod 2 = 0 then begin write(ai, ); s:=s+ai; end; writeln(s); for i:=1 to 10 do if i mod 20 then begin write(ai, ); t:=t+ai; n:=n+1; end; writeln(t/n);end. 3.读入n个数,打印其中的最大数及其位置号 (读入n个数打印其中的最大数及其位置号) 标程program exe6_2; var i,max,min,t,n:integer; a:array1.10 of integer; begin for i:=1 to 10 do read(ai); max:=a1; min:=a1; t:=1; n:=1; for i:=2 to 9 do begin if maxai then begin min:=ai; n:=I; end; end; writeln(max, ,t); writeln(min, ,n); end. 4.交换a和b的值 标程program p1_1;var a,b,x:integer;begin read(a,b); x:=a; a:=b; b:=x;writeln(a, ,b);End.Problem 1 : leader2谁是组长2问题描述 八中信息组需要选一个组长。信息组一共有n个人,分别用1到n编号,其中m个人参与了投票。得票数过半(票数大于m div 2)的人将被选为组长。 输入数据将告知这m个人分别将票投给了谁,请统计出谁将担任八中信息组的组长。输入数据 第一行两个数n和m。 第二行有m个数,这些数都是不超过n的正整数,表明这m个人的选择。输出数据 输出将被选为组长的人。如果没有人的票数过半,请输出-1。输入样例7 47 7 2 7输出样例7时间限制 各测试点1秒内存限制 你的程序将被分配32MB的运行空间数据规模 1=n=maxlongint 1=m=1 000 000考察内容查找第k大元素program leader2;var a:array1.1000000of longint; n,m:longint;procedure readp;var i:longint;begin readln(n,m); for i:=1 to m do read(ai);end;procedure swap(var t1,t2:longint);var t3:longint;begin t3:=t1; t1:=t2; t2:=t3;end;function find(l,r,k:longint):longint;var i,j,mid:longint;begin if l=r then exit(al); i:=l; j:=r; mid:=a(i+j)div 2; repeat while aimid do dec(j); if ij; if (l=j) and (k=j) then exit(find(l,j,k); if (i=i) then exit(find(i,r,k); exit(mid);end;function leader(x:longint):boolean;var i,count:longint;begin count:=0; for i:=1 to m do if ai=x then inc(count); exit(countm div 2);end;=main=var x:longint;begin assign(input,leader2.in); reset(input); assign(output,leader2.out); rewrite(output); readp; x:=find(1,m,m div 2); if leader(x) then writeln(x) else writeln(-1); close(input); close(output);End.Problem 2 : typewrt有故障的打字机问题描述 一台打字机准备将1到10n的数依次打出。在打印过程中,这台打字机出现了一个故障:数字“3”打不出来。因此,所有含有数字“3”的数都没有被正确地打出。试问没有被正确打出的数一共有多少个。输入数据 输入一个正整数n。输出数据 输出从1到10n这些数中不能被正确打印的数的个数。输入样例2输出样例19时间限制 各测试点1秒内存限制 你的程序将被分配32MB的运行空间数据规模 n0 then ans0:=a0+1 else ans0:=a0; exit(ans);end;=main=var i,n:integer; ans:arr;begin assign(input,typewrt.in); reset(input); assign(output,typewrt.out); rewrite(output); readln(n); ans0:=1; ans1:=1; for i:=1 to n do ans:=mul(ans,9); for i:=n downto 2 do write(9-ansi); writeln(10-ans1); close(input); close(output);End.Problem 3 : maxsum最大约数和问题描述 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。输入数据 输入一个正整数S。输出数据 输出最大的约数之和。样例输入11样例输出9样例说明 取数字4和6,可以得到最大值(1+2)+(1+2+3)=9。时间限制 各测试点1秒内存限制 你的程序将被分配32MB的运行空间数据规模 S=0) and (fi-1,j-i+aifi,j) then fi,j:=fi-1,j-i+ai; end;end;=main=var i:longint;begin assign(input,maxsum.in); reset(input); assign(output,maxsum.out); rewrite(output); readln(s); for i:=1 to s do ai:=sum(i); solve; writeln(fs,s); close(input); close(output);end.Problem 4 : flu流感会结束吗问题描述 八中一共有n个学生。这n个学生里一共有m对朋友关系。 在流感发作期,每个健康学生都要看望当天他生病的朋友(如果有的话),并在第二天被传染上疾病(除非他在免疫期内); 每个生病的学生在第二天都会痊愈,并在这一天具有免疫性。从第三天起,看望生病的朋友将再次使他染上流感。 初始时(第一天),只有一个学生患有流感。试问多少天后流感会自动结束。输入数据 第一行输入两个正整数n和m。 接下来m行每行两个正整数x,y,表示编号为x的学生和编号为y的学生是一对朋友。输入数据保证每一对朋友关系只描述一次。 最后一行输入一个正整数,代表初始时患有流感的学生的编号。输出数据 如果流感永远不会结束,请输出-1,否则输出多少天后流感会结束。 答案保证不超过2 000 000 000。样例输入4 41 22 33 42 41样例输出3样例说明 第一天1号学生生病,2号学生访问他; 第二天2号学生生病,其它三个学生访问他,由于1号处于免疫期,未患流感; 第三天3、4号学生生病,2号学生访问他们。 第四天3、4号学生痊愈,流感结束。时间限制 各测试点1秒内存限制 你的程序将被分配32MB的运行空间数据范围n,m=100 000。考察内容图的宽度优先遍历program flu;type pointer=rec1; rec1=record value:longint; next:pointer; end; rec2=record node,step:longint; end;var connect:array1.100000of pointer; queue:array1.100000of rec2; hash:array1.100000of boolean; n,m,t:longint;procedure insert(x,y:longint);var tmp:pointer;begin new(tmp); tmp.value:=x; tmp.next:=connecty; connecty:=tmp;end;procedure readp;var i,x,y:longint;begin readln(n,m); for i:=1 to m do begin readln(x,y); insert(x,y); insert(y,x); end; readln(t);end;procedure solve;var closed,open:longint; tmp:pointer;begin closed:=0; open:=1; queue1.node:=t; queue1.step:=1; hasht:=true; repeat closed:=closed+1; tmp:=connectqueueclosed.node; while tmpnil do begin if not hashtmp.value then begin hashtmp.value:=true; open:=open+1; queueopen.node:=tmp.value; queueopen.step:=queueclosed.step+1; end; tmp:=tmp.next; end; until closed=open; writeln(queueopen.step);end;begin assign(input,flu.in); reset(input); assign(output,flu.out); rewrite(output); readp; solve; close(input); close(output);End.从键盘输入10个数,将这10个数逆序输入,并求这10个数的和,输出这个和。program p1;var a:array 1.10 of integer; i,s:integer;begin for i:=1 to 10 do read(ai); for i:=10 downto 1 do write(ai, ); writeln; s:=0; for i:=1 to 10 do s:=s+ai; writeln(s=,s);end.用筛法求100以内的素数(质数)。分析:素数是除了1和它本身以外没有其它约数的数。用筛法求素数的方法是:用质数筛去合数:从第一个素数2开始,把它的倍数去掉;这样2以后的第一个非0数就一定也是素数,把它的倍数也删了重复这个删数过程,直到在所找到的素数后再也找不到一个非0数。把所有非0数输出。program p2;vara:array 1.100 of integer; i,j,k:integer;begin for i:=1 to 100 do ai:=i; a1:=0;i:=2; while i=100 do begin k:=i; while k=100 do begin k:=k+i; ak:=0; end; i:=i+1; while ai=0 do i:=i+1; end; for i:=1 to 100 do if ai0 then write(ai, );end.竞赛小组共有20位同学,这学期每位同学共参与了三项比赛,请统计每位同学的平均分。分析:定义一个20行3列的二维数组来存放这些成绩。定义一个20个元素的一维数组来存放平均分。program p1;var a:array 1.20,1.3 of integer; b:array 1.20 of real; i,j:integer;begin for i:=1 to 20 do begin for j:=1 to 3 do read(ai,j); readln; end; for i:=1 to 20 do bi:=0; for i:=1 to 20 do begin for j:=1 to 3 do bi:=bi+ai,j; bi:=bi/3; end; for i:=1 to 20 do write(bi:5:1);writeln;end.求n个自然数的最大公约数;program gcd1;const maxn=100;var n,i,gcd:integer; a:array1.maxn of integer;procedure enter;begin write(n=(0;end;procedure find_gcd(x,y:integer);var r:integer;begin r:=x mod y; while r0 do begin x:=y;y:=r;r:=x mod y; end gcd:=y;end;procedure print;begin writeln(GCD= ,gcd);end;begin enter; gcd:=a1; for i:=2 to n do find_gcd(gcd,ai); print;end.编一程序,求从10名同学中选出3名代表,有几种不同的选法。 (公式:C(m,n)=m!/n!*(m-n)!从m中选n)program zohe1;var m,n:integer; c:longint;function factor(x:integer):longint; var i:integer; p:longint; begin p:=1; for i:=1 to x do p:=p*i; factor:=p; end;begin write(m,n=);readln(m,n); c:=factor(m) div (factor(n)*factor(m-n); writeln(c(,m,n,)=,c);end.例4:全局变量和局部变量。program local_global;var i,k:integer;procedure sub1;var i,j:integer; begin i:=17; writeln(i in sub=,i); writeln(k in sub=,k); end;begin i:=2;k:=9; writeln(i in main=,i); writeln(k in sub=,k); sub1; writeln(i in main=,i); writeln(j in main=,j); readln;end.1、验证卡布列克运算。(cab.pas)任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: 1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数; 2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果 四个数中含有0,则得到的数不足四位); 3)求两个数的差,得到一个新的四位数(高位零保留)。 重复以上过程,最后得到的结果是6174,这个数被称为卡布列克数请你写一个程序,计算一个四位数经过上述运算最后得到卡布列克数所需的步数。输入文件:cab.in文件包含一行数据,即一个四位正整数。输出文件:cab.out文件包含一个整数,即步数。Program cab; var c,t:array1.4 of integer; i,j,temp,step:integer; s:array1.4 of char;begin for i:=1 to 4 do read(si); readln; for i:=4 downto 1 do ci:=ord(s5-i)-ord(0); step:=0; while (c14) or (c27) or (c31) or (c46) do begin for i:=1 to 3 do for j:=i+1 to 4 do if cicj then begin temp:=ci; ci:=cj; cj:=temp end; for i:=1 to 4 do ti:=c5-i; for i:=1 to 4 do begin ci:=ci-ti; j:=i; while cj0 do begin cj:=cj+10; j:=j+1; cj:=cj-1 end end; step:=step+1 end; writeln(step);end.2、最大整数。(string.pas)设有n个正整数(n30000),将它们联接成一排,组成一个最大的多位整数。例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613输入文件:s.in文件第一行包含一个正整数,即正整数的个数n,文件第二行为n个正整数,各数之间用空格分隔。输出文件:s.out文件包含一行数据,即联接成的多位数。var a:array1.30000 of string; n,i,j,k,code,m:integer; s:string;begin readln(n); for i:=1 to n do begin read(k); str(k,ai); end; for i:=n downto 2 do begin for j:=1 to i-1 do if (aj+aj+1) (aj+1+aj) then begin s:=aj; aj:=aj+1; aj+1:=s; end; end;. for i:=1 to n do write(ai);end.3、蛇形方阵。(snake.pas)任给n,试按如下方式对AI,j赋值,例如: Enter n : 6 1 2 6 7 15 16 3 5 8 14 17 26 4 9 13 18 25 27 10 12 19 24 28 33 11 20 23 29 32 34 21 22 30 31 35 36输入文件:snake.in文件包含一个正整数,即阶数n。输出文件:snake.out文件包含n行,每行n个数的蛇形方阵。var n,i,j,r,c,k:integer;begin readln(n); for i:=1 to n do begin for j:=1 to n do begin if i+j80),并且在本学期内发表1篇或1篇以上论文的学生均可获得;2) 五四奖学金,每人4000元,期末平均成绩高于85分(85),并且班级评议成绩高于80分(80)的学生均可获得;3) 成绩优秀奖,每人2000元,期末平均成绩高于90分(90)的学生均可获得;4) 西部奖学金,每人1000元,期末平均成绩高于85分(85)的西部省份学生均可获得;5) 班级贡献奖,每人850元,班级评议成绩高于80分(80)的学生干部均可获得;只要符合条件就可以得奖,每项奖学金的获奖人数没有限制,每名学生也可以同时获得多项奖学金。例如姚林的期末平均成绩是87分,班级评议成绩82分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是4850元。现在给出若干学生的相关数据,请计算哪些同学获得的奖金总数最高(假设总有同学能满足获得奖学金的条件)。【输入文件】输入文件scholar.in的第一行是一个整数N(1 = N = 100),表示学生的总数。接下来的N行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。姓名是由大小写英文字母组成的长度不超过20的字符串(不含空格);期末平均成绩和班级评议成绩都是0到100之间的整数(包括0和100);是否是学生干部和是否是西部省份学生分别用一个字符表示,Y表示是,N表示不是;发表的论文数是0到10的整数(包括0和10)。每两个相邻数据项之间用一个空格分隔。【输出文件】输出文件scholar.out包括三行,第一行是获得最多奖金的学生的姓名,第二行是这名学生获得的奖金总数。如果有两位或两位以上的学生获得的奖金最多,输出他们之中在输入文件中出现最早的学生的姓名。第三行是这N个学生获得的奖学金的总数。【样例输入】4YaoLin 87 82 Y N 0ChenRuiyi 88 78 N Y 1LiXin 92 88 N N 0ZhangQin 83 87 Y N 1【样例输出】ChenRuiyi900028700program scholar;var name:array1.100 of string; a1,a2,a5:array1.100 of longint; a3,a4:array1.100 of char; n,i,max,total,p:longint; maxname:string; ch:char;begin readln(n); for i:=1 to n do begin read(ch); while ch do begin namei:=namei+ch; read(ch); end; readln(a1i,a2i,ch,a3i,ch,a4i,ch,a5i); end; for i:=1 to n do begin p:=0; if (a1i80) and (a5i=1) then inc(p,8000); if (a1i85) and (a2i80) then inc(p,4000); if (a1i90) then inc(p,2000); if (a1i85) and (a4i=Y) then inc(p,1000); if (a2i80) and (a3i=Y) then inc(p,850); if pmax then begin max:=p; maxname:=namei; end; inc(total,p); end; writeln(maxname); writeln(max); writeln(total); end.奇数魔方阵 把整数1到n(n为奇数)排成一个n*n方阵,使方阵中的每一行每一列以及对角线上的数之和都相同program jsmfz;var magic:array1.100,1.100 of integer; i,j,k,h,l,n:integer;begin read(n); for i:=1 to n do for j:=1 to n do magici,j:=0; k:=1; i:=1; j:=n div 2+1; magici,j:=k; while kn*n do begin k:=k+1; h:=i-1; l:=j-1; if l=0 then l:=n; if magich,l=0 then begin magich,l:=k; i:=h; j:=l; end else begin magici+1,j:=k; i:=i+1; end; end; for i:=1 to n do begin for j:=1 to n do write(magici,j:3); writeln; end;end.输入50名学生4门功课的成绩,输出各人各科成绩及总分program cj;var a:array1.50,1.6 of integer; i,j:integer;begin for i:=1 to 50 do for j:=1 to 5 do read(ai,j); for i:=1 to 50 do for j:=2 to 5 do ai,6:=ai,6+ai,j; for i:=1 to 50 do begin for j:=1 to 6 do write(ai,j, ); writeln; end;End.稀疏矩阵化简program xsjz;const n=5;var a:array1.n,1.n of integer; b:array1.100,1.3 of integer; i,j,k:integer;begin for i:=1 to n do for j:=1 to n do read(ai,j); k:=0; for i:=1 to n do for j:=1 to n do if ai,j0 then begin k:=k+1; bk,1:=i; bk,2:=j; bk,3:=ai,j; end; for i:=1 to k do begin for j:=1 to 3 do write(bi,j:3); end; End.将a和b中大的值给max的程序program p1_2;var a,b,max:integer;beginread(a,b);max:=a;if bmax then max:=b;writeln(max);End.给定一个正整数n,判定它是否为素数的程序program p1_3;var i,n,r,w:integer;begin read(n); w:=0 i:=2; repeat r:=n mod i; if r=0 then w:=1; i:=i+1; until(in-1)or(w=1);if w=0 then writeln(yes)else writeln(no)End.输入两个数a,b,输出较大的数。program tt;var a,b:integer;begin readln(a,b); if ab then writeln(a) else writeln(b);end. 某全自动加油站a,b,c三种汽油的单价(元/kg)分别是1.50、1.35和1.18,也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠。编一个程序,用户输入加油量、汽油品种和服务类型(f-自动,m-自己,e-协助),然后计算应付款。program pcase1;var oil,help:char; kg,total:real;begin write(Enter the amount in kilograms(kg):); readln(kg); write(Which type of the gasoline(a,b,c):); readln(oil); wirte(Which type for service(f,m,e):); readln(help); case oil of a: total:=1.50*kg; b: total:=1.35*kg; c: total:=1.18*kg; else writeln(Input Error!) end; case help of f:; m: total:=total*(1-0.05); e: total:=total*(1-0.10); else writeln(Input Error!) end; writeln; writeln(Total is ,total:10:2);end.从键盘上读入年和月,输出该月有多少天。program pcase2;var year,month,day:integer; runnian:boolean;begin write(Enter year and month:); readln(year,month); case month of 1,3,5,7,8,10,12: day:=31; 4,6,9,11: day:=30; 2:begin runnian:=(year mod 400=0) or (year mod 4=0) and (year mod 1000); case runnian of true: day:=28; false: day:=29; end; end; end;end.从键盘输入10个数,将这10个数逆序输入,并求这10个数的和,输出这个和。program p1;var a:array 1.10 of integer; i,s:integer;begin for i:=1 to 10 do rea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 入院流程护士课件
- 入职安全培训简讯课件
- 2025年数字货币在文化娱乐领域的应用与监管研究报告
- 健康行业知识培训课件
- 偏瘫病人护理
- 促进民族团结精美课件
- 广西钦州市第十三中学2025-2026学年高二上学期第一周考试地理试卷(含答案)
- 2026届广东省兴宁市水口中学物理高三上期末学业质量监测模拟试题
- 浙江省七彩阳光2025-2026学年物理高三第一学期期末考试模拟试题
- 银监会舆情管理办法
- 《女性盆底解剖》课件
- 19.《只有一个地球》-课前预习单-小学语文六年级上册课前
- 九年级第一次家长会-(13张课件)
- 【新教材】部编版小学道德与法治四年级上册-全册课件
- 2024年河南省郑州市二七区小升初英语试卷
- DB65-T 4762-2023 油田地面工程建设节能技术规范
- 输血治疗中的大数据分析
- DL-T 297-2023 汽轮发电机合金轴瓦超声检测
- 《福建省建筑工程施工文件管理规程2》
- 幼儿园小班早操活动方案
- 新媒体广告-课件-第三章-新媒体广告伦理与法规
评论
0/150
提交评论