0811阅读程序写结果和完善程序.docx
- 文档编号:26121444
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:39
- 大小:34.80KB
0811阅读程序写结果和完善程序.docx
《0811阅读程序写结果和完善程序.docx》由会员分享,可在线阅读,更多相关《0811阅读程序写结果和完善程序.docx(39页珍藏版)》请在冰豆网上搜索。
0811阅读程序写结果和完善程序
1.var
i,a,b,c,d:
integer;
f:
array[0..3]ofinteger;
begin
fori:
=0to3do
read(f[i]);
a:
=f[0]+f[1]+f[2]+f[3];
a:
=adivf[0];
b:
=f[0]+f[2]+f[3];
c:
=(b*f[1]+a)divf[2];
d:
=f[(bdivc)mod4];
if(f[(a+b+c+d)mod4]>f[2])then
begin
a:
=a+b;
writeln(a)
end
else
begin
c:
=c+d;
writeln(c);
end;
end.
输入:
9192939
输出:
23(信心题)
2.procedurefoo(a,b,c:
integer);
begin
ifa>bthenfoo(c,a,b)
else
writeln(a,',',b,',',c)
end;
vara,b,c:
integer;
begin
readln(a,b,c);
foo(a,b,c);
end.
输入:
213
输出:
1,3,2(简单递归)
3.proceduref(a,b,c:
integer);
begin
write(a,b,c,'/');
if(a=3)and(b=2)and(c=1)thenexit;
if(b else ifa ifa end; vara,b,c: integer; begin readln(a,b,c); f(a,b,c); end. 输入: 132 输出: 132/213/231/312/321/(全排列) 4.var s: string; i,j,len,k: integer; begin readln(s); len: =length(s); fori: =1tolendo if(ord(s[i])>=ord('A'))and(ord(s[i])<=ord('Z'))then s: =chr(ord(s[i])-ord('A')+ord('a')); fori: =1tolendo if(ord(s[i]) =chr(ord(s[i])+3) else s: =chr(ord(s[i])-23); write(s); write('/'); forj: =1to3do begin i: =1; whilei<=len-jdo begin s[i]: =s[i+j]; i: =i+j; end; end; writeln(s); end. 输入: ABCDEFGuvwxyz 输出: defghijxyzabc/hfizxjaybcccc(字符串替换) 1. Vara,b: integer; functionwork(a,b: integer): integer; begin ifamodb<>0then work: =work(b,amodb) else work: =b; end; begin read(a,b); writeln(work(a,b)); end. 输入: 123321 输出: 3 2. Vari,j,tmp: integer; a,b: array[0..3]ofinteger; begin fori: =0to3do read(b[i]); fori: =0to3do begin a[i]: =0; forj: =0toido begin inc(a[i],b[j]); inc(b[a[i]mod4],a[j]); end; end; tmp: =1; fori: =0to3do begin a[i]: =a[i]mod10; b[i]: =b[i]mod10; tmp: =tmp*(a[i]+b[i]); end; writeln(tmp); end. 输入: 2357 输出: 5850 3.const y=2009; maxn=50; varn,i,j,s: longint; c: array[0..maxn,0..maxn]oflongint; begin s: =0; read(n); c[0,0]: =1; fori: =1tondo begin c[i,0]: =1; forj: =1toi-1do c[i,j]: =c[i-1,j-1]+c[i-1,j]; c[i,i]: =1; end; fori: =0tondo s: =(s+c[n,i])mody; write(s); end. 输入: 17 输出: 487(杨辉三角) 4. Varn,m,i,j,k,p: integer; a,b: array[0..100]ofinteger; begin read(n,m); a[0]: =n; i: =0; p: =0; k: =0; repeat forj: =0toi-1do ifa[i]=a[j]then begin p: =i; k: =j; break; end; ifp<>0then break; b[i]: =a[i]divm; a[i+1]: =(a[i]modm)*10; inc(i); untila[i]=0; write(b[0],'.'); forj: =1tok-1do write(b[j]); ifp<>0then write('('); forj: =ktoi-1do write(b[j]); ifp<>0then write(')'); writeln; end. 输入: 513 输出: 0.(384615)(分数变小数) 1.const size=10; vari,j,cnt,n,m: integer; data: array[1..size]ofinteger; begin readln(n,m); fori: =1tondo read(data[i]); fori: =1tondo begin cnt: =0; forj: =1tondo if(data[i] theninc(cnt); ifcnt=m thenwriteln(data[i]); end; end. 输入 52 96-801687 输出: 16 2.constsize=100; varna,nb,i,j,k: integer; a,b: array[1..size]ofinteger; begin readln(na); fori: =1tonadoread(a[i]); readln(nb); fori: =1tonbdoread(b[i]); i: =1; j: =1; while(i<=na)and(j<=nb)do begin ifa[i]<=b[j]then begin write(a[i],''); inc(i); end elsebegin write(b[j],''); inc(j); end; end; ifi<=nathen fork: =itonado write(a[k],''); ifj<=nbthen fork: =jtonbdo write(b[k],''); end. 输入 5 13579 4 261014 输出: 12356791014 3.constnum=5; varn: integer; functionr(n: integer): integer; vari: integer; begin ifn<=numthenbegin r: =n; exit; end; fori: =1tonumdo ifr(n-i)<0thenbegin r: =i; exit; end; r: =-1; end; begin readln(n); writeln(r(n)); end. 输入16 输出: 4 4.constsize=100; varn,m,x,y,i: integer; r: array[1..size]ofinteger; map: array[1..size,1..size]ofboolean; found: boolean; functionsuccessful: boolean; vari: integer; begin fori: =1tondo ifnotmap[r[i]][r[imodn+1]] thenbegin successful: =false; exit; end; successful: =true; end; procedureswap(vara,b: integer); vart: integer; begin t: =a;a: =b;b: =t; end; procedureperm(left,right: integer); var i: integer; begin iffoundthenexit; ifleft>rightthenbegin ifsuccessfulthenbegin fori: =1tondo writeln(r[i],''); found: =true; end; exit; end; fori: =lefttorightdo begin swap(r[left],r[i]); perm(left+1,right); swap(r[left],r[i]); end; end; begin readln(n,m); fillchar(map,sizeof(map),false); fori: =1tomdo begin readln(x,y); map[x][y]: =true; map[y][x]: =true; end; fori: =1tondo r[i]: =i; found: =false; perm(1,n); ifnotfound then writeln('Nosoloution'); end. 输入: 912 12 23 34 45 56 61 17 27 38 48 59 69 输出: 169548327 1.ConstSIZE=100; Varn,i,sum,x: integer; a: array[1..SIZE]ofinteger; begin readln(n); fillchar(a,sizeof(a),0); fori: =1tondo begin read(x); inc(a[x]); end; i: =0;sum: =0; whilesum<(ndiv2+1)dobegin inc(i); sum: =sum+a[i]; end; writeln(i); end. 输入: 11 45664332321 输出: 3 2.Varn: integer; proceduref2(x,y: integer); forward; proceduref1(x,y: integer); begin ifx f2(y,x+y); end; proceduref2(x,y: integer); begin write(x,’’); f1(y,x+y); end; begin readln(n); f1(0,1); end. 输入: 30 输出: 1251334 3.ConstV=100; var visited: array[1..v]ofboolean; e: array[1..V,1..V]ofinteger; n,m,ans,i,j,a,b,c: integer; proceduredfs(x,len: integer); varI: integer; begin visited[x]: =true; iflen>ansthen ans: =len; fori: =1tondo if(notvisited[i])and(e[x,i]<>-1)then dfs(i,len+e[x,i]); visited[x]: =false; end; begin readln(n,m); fori: =1tondo forj: =1tondo e[i][j]: =-1; fori: =1tomdobegin readln(a,b,c); e[a][b]: =c; e[b][a]: =c; end; fori: =1tondo visited[i]: =false; ans: =0; fori: =1tondodfs(i,0); writeln(ans); end. 输入: 46 1210 2320 3430 4140 1350 2460 输出: 150 4. ConstSIZE=10000; LENGTH=10; Varsum: longint; n,m,i,j: integer; a: array[1..SIZE,1..LENGTH]ofinteger; functionh(u,v: integer): integer; varans,i: integer; begin ans: =0; fori: =1tondo ifa[u][i]<>a[v][i]then inc(ans); h: =ans; end; begin readln(n); filichar(a,sizeof(a),0); m: =1; repeat i: =1; while(i<=n)and(a[m][i]=1)do inc(i); ifi>nthen break; inc(m); a[m][i]: =1; forj: =i+1tondo a[m][j]: =a[m-1][j]; untilfalse; sum: =0; fori: =1tomdo forj: =1tomdo sum: =sum+h(i,j); writeln(sum); end. 输入: 7 输出: 57344 1.(找第k大的数)给定一个长度为1000000的无序正整数序列,以及另一个数n(1<=n<=1000000),接下来以类似快速排序的方法找到序列中第n大的数(关于第n大的数: 例如序列{1,2,3,4,5,6}中第3大的数是4) Vara: array[1..1000000]ofinteger; n,m,ans: integer; procedureswap(vara,b: integer); vart: integer; begin if(a<>b)thenbegin t: =a;a: =b;b: =t; end; end; FunctionFindKth(left,right,n: integer): integer; Vartmp,value,i,j: integer; begin ifleft=rightthenexit(left); tmp: =random(right-left)+left; swap(a[tmp],a[left]); value: =①a[left] i: =left;j: =right; whilei begin while(i ifi a: =a[j];inc(i); endelsebreak; while(i ifi a[j]: =a[i];dec(j); endelsebreak; end; ④a[i]: =value; ifi ifi>nthenbegindec(j);exit(⑥FindKth(left,i,n));end; exit(i); end; vari: integer; begin randomize; ans: =-1; m: =5; fori: =1tomdo read(a[i]); read(n); ans: =FindKth(1,m,n); writeln(a[ans]); end. 2.(矩阵中的数字)有一个n*n(1≤n≤5000)的矩阵a,对于1≤i 即矩阵中左右相邻的两个元素,右边的元素一定比左边的大。 上下相邻的两个元素,下面的元素一定比上面的大。 给定矩阵a中的一个数字k,找出k所在的行列(注意: 输入数据保证矩阵中的数各不相同)。 var n,k,answerx,answery: integer; a: array[1..5000,1..5000]ofinteger; ProcedureFindKPosition; VarI,j: integer; Begin i: =n;j: =n; whilej>0dobegin ifa[n,j] dec(j); end; ①inc(j);(或者j: =j+1;) whilea[i,j]<>kdo begin while(②a[i,j]>k)and(i>1)dodec(i); while(③a[i,j] end; ④answerx: =i; ⑤answery: =j; end; vari,j: integer; begin read(n); fori: =1tondo forj: =1tondo read(a[i,j]); read(k); FindKPosition; writeln(answerx,'',answery); end. 1.(最大连续子段和)给出一个数列(元素个数不多于100),数列元素均为负整数、正整数、0。 请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。 例如数列为4,-5,3,2,4时,输出9和3;数列为123-5078时,输出16和7。 var a: array[1..100]ofinteger; n,i,ans,len,tmp,beg: integer; begin read(n); fori: =1tondo read(a[i]); tmp: =0; ans: =0; len: =0; beg: =①0; fori: =1tondo begin iftmp+a[i]>ansthen begin ans: =tmp+a[i]; len: =i-beg; end elseif(②tmp+a[i]=ans或者a[i]+tmp=ans或者ans=a[i]+tmp等)and(i-beg>le
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 0811 阅读 程序 结果 完善