• 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;
    begin
        fillchar(a,sizeof(a),0);
        fillchar(b,sizeof(b),0);
        l1:=length(s1);
        l2:=length(s2);
        for i:=1 to l1 do
        a[max-l1+i]:=ord(s1[i])-ord('0');
        for i:=1 to l2 do
        b[max-l2+i]:=ord(s2[i])-ord('0');
        g:=0;
        for i:=max downto 1 do
        if a[i]>=b[i]+g then
        begin
            a[i]:=a[i]-b[i]-g;
            g:=0;
        end else
        begin
            a[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 do
        write(a[j]);
        write(' ');
    end;
    
    
    begin
        assign(input,'score.in');
        reset(input);
        assign(output,'score.out');
        rewrite(output);
    
        readln(x);
        zfc:='';
        for i:=1 to length(x) do
        if x[i]<>' ' then zfc:=zfc+x[i];
        x:=zfc;
    
        readln(y);
        zfc:='';
        for i:=1 to length(y) do
        if y[i]<>' ' then zfc:=zfc+y[i];
        y:=zfc;
    
        readln(z);
        zfc:='';
        for i:=1 to length(z) do
        if z[i]<>' ' then zfc:=zfc+z[i];
        z:=zfc;
    
        readln(n);
        x1:='';x2:='';x3:='';
        for i:=1 to n do
        begin
            readln(c);
            zfc:='';
            if length(c)>=length(x1) then
            begin
                for j:=1 to length(c) do
                if c[j]<>' ' then zfc:=zfc+c[j];
                if zfc>=x1 then x1:=zfc;
            end;
            readln(c);
            zfc:='';
            if length(c)>=length(x2) then
            begin
                for j:=1 to length(c) do
                if c[j]<>' ' then zfc:=zfc+c[j];
                if zfc>=x2 then x2:=zfc;
            end;
            readln(c);
            zfc:='';
            if length(c)>=length(x3) then
            begin
                for j:=1 to length(c) do
                if 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.
  • 相关阅读:
    HUAWEI防火墙双出口据链路带宽负载分担
    HUAWEI防火墙双出口根据链路优先级主备备份
    HUAWEI防火墙双出口环境下私网用户通过NAPT访问Internet
    如何实现IP话机接入交换机?
    WLAN-AC+AP,动态负载均衡用户量,避免某一个AP负载过重
    WLAN-AC+AP射频一劳永逸的调优方式
    中大型企业有线无线用户统一接入(实施笔记)
    js获取当前时间,返回日期yyyy-MM-dd
    cookie和token都存在在请求头header中,有什么区别,为什么建议使用token?
    vue中cookie的使用——将cookie放在请求头header中
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500089.html
Copyright © 2020-2023  润新知