欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

JZOJ__Day 6:【普及模拟】Oliver的成绩(score)

发布时间:2025/3/15 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 JZOJ__Day 6:【普及模拟】Oliver的成绩(score) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目描述

Oliver进入初中后,觉得自己不能总是玩儿了,应该要好好学习了。正好一次考试结束了,Oliver想知道自己的语文,数学,英语分别与语文年级第一,数学年级第一,英语年级第一相差多少。
由于Oliver所在年级有N个人,所以Oliver想你编个程序帮帮他。

输入

score.in共3N+4行,第一~三行分别为Oliver的语文数学英语成绩(位数M),第四行为N,以下3N行,每行一个数(它们的位数是M),分别为第N个同学的语文,数学,英语成绩。
即:Oliver的语文 数学 英语
N
第一个人的语文
数学
英语
第二个人的语文

输出

score.out共一行,有三个数,分别为Oliver的语文数学英语与年级第一的差。
如果Oliver是第一,则输出0.

样例输入

10
10
10
3
0
80
0
40
0
0
0
0
100

样例输出

30 70 90

【数据范围】
对于50%的数据,0< N < 1000,0< M <19.
对于100%的数据,0< N <10000,0< M <30.且都为整数。

分析
这一题的意思是说,给出三科成绩,分别与其他的N个人的成绩作比较,并输出 单科最高成绩 减Oliver单科成绩。值得注意的是,成绩的位数可能有M(0

type arr=array[-10..30]of longint; const max=30; var j,n,i:longint; x1,x2,x3,zfc,c,z,y,x:ansistring; procedure jian(s1,s2:ansistring); var a,b:arr; l1,l2,i,g,j:longint; beginfillchar(a,sizeof(a),0);fillchar(b,sizeof(b),0);l1:=length(s1);l2:=length(s2);for i:=1 to l1 doa[max-l1+i]:=ord(s1[i])-ord('0');for i:=1 to l2 dob[max-l2+i]:=ord(s2[i])-ord('0');g:=0;for i:=max downto 1 doif a[i]>=b[i]+g thenbegina[i]:=a[i]-b[i]-g;g:=0;end elsebegina[i]:=a[i]+10-b[i]-g;g:=1;end;i:=1;while (i<max)and(a[i]=0) do inc(i);for j:=i to max dowrite(a[j]);write(' '); end;beginassign(input,'score.in');reset(input);assign(output,'score.out');rewrite(output);readln(x);zfc:='';for i:=1 to length(x) doif x[i]<>' ' then zfc:=zfc+x[i];x:=zfc;readln(y);zfc:='';for i:=1 to length(y) doif y[i]<>' ' then zfc:=zfc+y[i];y:=zfc;readln(z);zfc:='';for i:=1 to length(z) doif z[i]<>' ' then zfc:=zfc+z[i];z:=zfc;readln(n);x1:='';x2:='';x3:='';for i:=1 to n dobeginreadln(c);zfc:='';if length(c)>=length(x1) thenbeginfor j:=1 to length(c) doif c[j]<>' ' then zfc:=zfc+c[j];if zfc>=x1 then x1:=zfc;end;readln(c);zfc:='';if length(c)>=length(x2) thenbeginfor j:=1 to length(c) doif c[j]<>' ' then zfc:=zfc+c[j];if zfc>=x2 then x2:=zfc;end;readln(c);zfc:='';if length(c)>=length(x3) thenbeginfor j:=1 to length(c) doif c[j]<>' ' then zfc:=zfc+c[j];if zfc>=x3 then x3:=zfc;end;end;if x1=x then write(0,' ') else if (length(x1)<length(x)) then write(0,' ') else if (x1>x)or(length(x1)>=length(x)) then jian(x1,x);if x2=y then write(0,' ') else if (length(x2)<length(y)) then write(0,' ') else if (x2>y)or(length(x2)>=length(y)) then jian(x2,y);if x3=z then write(0,' ') else if (length(x3)<length(z)) then write(0,' ') else if (x3>z)or(length(x3)>=length(z)) then jian(x3,z);close(input);close(output); end.

转载于:https://www.cnblogs.com/YYC-0304/p/9500089.html

总结

以上是生活随笔为你收集整理的JZOJ__Day 6:【普及模拟】Oliver的成绩(score)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。