505 条题解

  • 0
    @ 2008-12-02 13:44:57

    program p1001;

    var s,name,maxname,xsgb,xbxs:string;

    s1,i,e,v,max,lw,pj,py:longint;

    ok,n,l:integer;

    procedure dq;

    var e,i:integer;

    begin

    for i:=1 to l do if s[i]=' ' then begin e:=i; break; end;

    name:=copy(s,1,e-1); delete(s,1,e);

    for i:=1 to l do if s[i]=' ' then begin e:=i; break; end;

    val(copy(s,1,e-1),pj,ok); delete(s,1,e);

    for i:=1 to l do if s[i]=' ' then begin e:=i; break; end;

    val(copy(s,1,e-1),py,ok); delete(s,1,e);

    for i:=1 to l do if s[i]=' ' then begin e:=i; break; end;

    xsgb:=copy(s,1,e-1); delete(s,1,e);

    for i:=1 to l do if s[i]=' ' then begin e:=i; break; end;

    xbxs:=copy(s,1,e-1); delete(s,1,e); val(s,lw,ok);

    end;

    begin

    readln(n); max:=0;

    for i:=1 to n do begin

    readln(s); v:=0; l:=length(s);

    dq;

    if (lw>=1)and(pj>80) then v:=v+8000;

    if (pj>85)and(py>80) then v:=v+4000;

    if pj>90 then v:=v+2000;

    if (pj>85)and(xbxs='Y') then v:=v+1000;

    if (py>80)and(xsgb='Y') then v:=v+850;

    s1:=s1+v; if v>max then begin max:=v; maxname:=name; end;

    end;

    writeln(maxname); writeln(max); writeln(s1);

    end.

    AC了了了了了了

  • 0
    @ 2008-11-28 19:08:58

    type

    student=

    record

    scholar:longint;

    name:string;

    end;

    var

    n,d1,d2,d5,i,maxscholar,total:longint;

    ch,d3,d4:char;

    s:array [1..100] of student;

    maxname:string;

    begin

    maxscholar:=0;

    total:=0;

    for i:=1 to 100 do

    begin

    s[i].scholar:=0;

    s[i].name:='';

    end;

    readln(n);

    for i:=1 to n do

    begin

    d1:=0;

    d2:=0;

    d5:=0;

    read(ch);

    repeat

    s[i].name:=s[i].name+ch;

    read(ch);

    until ch=' ';

    read(ch);

    repeat

    d1:=d1*10+ord(ch)-48;

    read(ch);

    until ch=' ';

    read(ch);

    repeat

    d2:=d2*10+ord(ch)-48;

    read(ch);

    until ch=' ';

    read(d3);

    read(ch);

    read(d4);

    read(ch);

    read(ch);

    repeat

    d5:=d5*10+ord(ch)-48;

    read(ch);

    until ch=chr(13);

    readln;

    if (d1>80) and (d5>=1) then s[i].scholar:=s[i].scholar+8000;

    if (d1>85) and (d2>80) then s[i].scholar:=s[i].scholar+4000;

    if d1>90 then s[i].scholar:=s[i].scholar+2000;

    if (d1>85) and (d4='Y') then s[i].scholar:=s[i].scholar+1000;

    if (d2>80) and (d3='Y') then s[i].scholar:=s[i].scholar+850;

    if s[i].scholar>maxscholar then

    begin

    maxname:=s[i].name;

    maxscholar:=s[i].scholar;

    end;

    total:=total+s[i].scholar;

    end;

    writeln(maxname);

    writeln(maxscholar);

    writeln(total);

    end.

  • 0
    @ 2008-11-27 14:23:20

    program jxj;

    type

    student=record

      xm:string;

      mark1,mark2,ly:longint;

      s,gb,xb:char;

    end;

    sj=array[1..100] of student;

    var

    ts,best,bxx,i,n:integer;

    tsj:sj;

    mark:array[1..100] of integer;

    begin

    read(n);

    for i:=1 to n do

      begin

      with tsj[i] do

       begin

        repeat

         read(s);

         if s=' ' then break;

         xm:=xm+s;

        until 11;

       end;

       read(tsj[i].mark1);

       read(tsj[i].mark2);

       read(tsj[i].gb);

       read(tsj[i].xb);

       read(ly);

       mark[i]:=0;

       best:=0;

       if (mark1>80) and (ly>=1) then mark[i]:=mark[i]+8000;

       if (mark1>85) and (mark2>80) then mark[i]:=mark[i]+4000;

       if mark1>90 then mark[i]:=mark[i]+2000;

       if (mark1>85) and (xb='Y') then mark[i]:=mark[i]+1000;

       if (mark2>80) and (gb='Y') then mark[i]:=mark[i]+850;

       if mark[i]>best then

       begin

        best:=mark[i];

        bxx:=i;

       end;

       ts:=ts+mark[i];

      end;

    write(tsj[bxx].xm);

    writeln(best);

    writeln(ts)

    end.

  • 0
    @ 2008-11-23 19:40:07

    #include

    int main(){

    int i,j,n,qm,py,lw,prize,max=0;

    long total=0;

    char a[20],name[20],xb,gb;

    scanf("%d",&n);

    for(i=1;i80)&&(lw>0)) prize+=8000;

    if((qm>85)&&(py>80)) prize+=4000;

    if(qm>90) prize+=2000;

    if((qm>85)&&(xb=='Y')) prize+=1000;

    if((py>80)&&(gb=='Y')) prize+=850;

    total+=prize;

    if(prize>max){

    max=prize;

    for(j=0;j

  • 0
    @ 2008-11-23 16:11:29

    #include

    using namespace std;

    int n,tot;

    struct one

    {

    char name[20];

    int qimo;

    int pinyi;

    char T;

    char R;

    int art;

    int money;

    }a[100];

    int cmp(const void *a,const void *b)

    {

    struct one*aa=(struct one*)a;

    struct one*bb=(struct one*)b;

    return (bb->money>aa->money)?1:-1;

    }

    int main()

    {

    cin>>n;

    for(int i=0;i>a[i].name>>a[i].qimo>>a[i].pinyi>>a[i].T>>a[i].R>>a[i].art;

    if(a[i].qimo>80&&a[i].art>=1)a[i].money+=8000;

    if(a[i].qimo>85&&a[i].pinyi>80)a[i].money+=4000;

    if(a[i].qimo>90)a[i].money+=2000;

    if(a[i].qimo>85&&a[i].R=='Y')a[i].money+=1000;

    if(a[i].pinyi>80&&a[i].T=='Y')a[i].money+=850;

    tot+=a[i].money; }

    qsort(a,n,sizeof(a[0]),cmp);

    cout

  • 0
    @ 2008-11-23 15:23:30

    program jxj;

    type

    student=record

      xm:string;

      mark1,mark2,ly:longint;

      s,gb,xb:char;

    end;

    sj=array[1..100] of student;

    var

    ts,best,bxx,i,n:integer;

    tsj:sj;

    mark:array[1..100] of integer;

    begin

    read(n);

    for i:=1 to n do

      begin

      with tsj[i] do

       begin

        repeat

         read(s);

         if s=' ' then break;

         xm:=xm+s;

        until 11;

       end;

       read(tsj[i].mark1);

       read(tsj[i].mark2);

       read(tsj[i].gb);

       read(tsj[i].xb);

       read(ly);

       mark[i]:=0;

       best:=0;

       if (mark1>80) and (ly>=1) then mark[i]:=mark[i]+8000;

       if (mark1>85) and (mark2>80) then mark[i]:=mark[i]+4000;

       if mark1>90 then mark[i]:=mark[i]+2000;

       if (mark1>85) and (xb='Y') then mark[i]:=mark[i]+1000;

       if (mark2>80) and (gb='Y') then mark[i]:=mark[i]+850;

       if mark[i]>best then

       begin

        best:=mark[i];

        bxx:=i;

       end;

       ts:=ts+mark[i];

      end;

    write(tsj[bxx].xm);

    writeln(best);

    writeln(ts)

    end.

  • 0
    @ 2008-11-22 20:02:30

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    简单,但是麻烦。

  • 0
    @ 2008-11-18 17:08:48

    program kji; 编程

    var

    s,lw,qm,bj,max,maxname:integer;

    gb,xb:char;

    begin

    s:=0; maxname:='';

    for i:=1 to n do

    max:=0; tatol:=0;

    read(s);

    if lw>0 then s:=s+8000;

    if (qm>85)and(bj>80) then s:=s+4000;

    if (qm>90) then s:=s+2000;

    if (xb=y)and(qm>85)then s:=s+1000;

    if (bj>80)and(gb=y) then s:=s+850;

    if s>max then max:=s;

    tatol:=tatol+max;

    writeln(maxname);

    writeln(max);

    writeln(tatol);

    end.

  • 0
    @ 2008-11-14 02:10:00

    program jxj;

    type

    student=record

    xm:string;

    mark1,mark2,ly:longint;

    s,gb,xb:char;

    end;

    sj=array[1..100] of student;

    var

    ts,best,bxx,i,n:integer;

    tsj:sj;

    mark:array[1..100] of integer;

    begin

    read(n);

    for i:=1 to n do

    begin

    with tsj[i] do

    begin

    repeat

    read(s);

    if s=' ' then break;

    xm:=xm+s;

    until 11;

    end;

    read(tsj[i].mark1);

    read(tsj[i].mark2);

    read(tsj[i].gb);

    read(tsj[i].xb);

    read(ly);

    mark[i]:=0;

    best:=0;

    if (mark1>80) and (ly>=1) then mark[i]:=mark[i]+8000;

    if (mark1>85) and (mark2>80) then mark[i]:=mark[i]+4000;

    if mark1>90 then mark[i]:=mark[i]+2000;

    if (mark1>85) and (xb='Y') then mark[i]:=mark[i]+1000;

    if (mark2>80) and (gb='Y') then mark[i]:=mark[i]+850;

    if mark[i]>best then

    begin

    best:=mark[i];

    bxx:=i;

    end;

    ts:=ts+mark[i];

    end;

    write(tsj[bxx].xm);

    writeln(best);

    writeln(ts)

    end.

  • 0
    @ 2008-11-13 22:27:21

    终于知道什么叫做郁闷,试了九次才通过。

    只是一个很小的错误——读论文数时本来应该是“readln”,我写了“read”

    大家不要重蹈覆辙啊!!

  • 0
    @ 2008-11-13 11:42:32

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    program scholar;

    var

    s,ansname,name1:ansistring;

    i,j,n,class1,art,term,sum,ans,len,now,orz,code:longint;

    west,gov:boolean;

    begin

    readln(n);

    for orz:=1 to n do

    begin

    readln(s);

    len:=length(s);

    term:=0;

    class1:=0;

    west:=false;

    gov:=false;

    art:=0;

    now:=0;

    i:=1;

    while s[i]' ' do inc(i);

    name1:=copy(s,1,i-1);

    now:=0;

    inc(i);

    j:=i;

    while s[j]' ' do inc(j);

    val(copy(s,i,j-i),term,code);

    i:=j+1;

    j:=i;

    while s[j]' ' do inc(j);

    val(copy(s,i,j-i),class1,code);

    inc(j);

    if s[j]='Y' then gov:=true;

    inc(j,2);

    if s[j]='Y' then west:=true;

    inc(j,2);

    val(copy(s,j,len-j+1),art,code);

    if term>80 then if art>0 then inc(now,8000);

    if term>85 then if class1>80 then inc(now,4000);

    if term>90 then inc(now,2000);

    if west then if term>85 then inc(now,1000);

    if gov then if class1>80 then inc(now,850);

    if now>ans then begin ansname:=name1;ans:=now;end;

    inc(sum,now);

    end;

    writeln(ansname);

    writeln(ans);

    writeln(sum);

    end.

  • 0
    @ 2008-11-13 09:05:42

    注意读入时各种数据类型的分隔符

    数为空格

    字符串为行

    字符就不用说了~

  • 0
    @ 2008-11-11 21:26:23

    "_"初一的程序:

    var name,maxname,s:string;

    pd1,pd2:char;

    sum,total:longint;

    fen,ping,n,max,pian,i:integer;

    function work(fen,ping:integer;pd1,pd2:char; pian:integer):longint;

    begin

    work:=0;

    if (fen>80) and (pian>0) then work:=work+8000;

    if (fen>85) and (ping>80) then work:=work+4000;

    if fen>90 then work:=work+2000;

    if (fen>85) and (pd2='Y') then work:=work+1000;

    if (ping>80) and (pd1='Y') then work:=work+850;

    end;

    procedure work(s:string);

    var pos1,d:integer;

    sub:string;

    begin

    pos1:=pos(' ',s);

    name:=copy(s,1,pos1-1);

    delete(s,1,pos1);

    pos1:=pos(' ',s);

    sub:=copy(s,1,pos1-1);

    val(sub,fen,d);

    delete(s,1,pos1);

    pos1:=pos(' ',s);

    sub:=copy(s,1,pos1-1);

    val(sub,ping,d);

    delete(s,1,pos1);

    pd1:=s[1];

    pd2:=s[3];

    delete(s,1,3);

    val(s,pian,d);

    end;

    begin

    readln(n);

    for i:=1 to n do

    begin

    readln(s);

    work(s);

    sum:=work(fen,ping,pd1,pd2,pian);

    if sum>max then

    begin

    max:=sum;

    maxname:=name;

    end;

    total:=total+sum;

    end;

    writeln(maxname);

    writeln(max);

    writeln(total);

    end.

  • 0
    @ 2008-11-10 22:09:57

    此题不可做!

  • 0
    @ 2008-11-09 13:10:40

    依次读入名字等,读一次判断一次

  • 0
    @ 2008-11-09 11:46:17

    var

    s,lw,qm,bj,max,maxname:integer;

    gb,xb:char;

    begin

    s:=0; maxname:='';

    for i:=1 to n do

    max:=0; tatol:=0;

    read(s);

    if lw>0 then s:=s+8000;

    if (qm>85)and(bj>80) then s:=s+4000;

    if (qm>90) then s:=s+2000;

    if (xb=y)and(qm>85)then s:=s+1000;

    if (bj>80)and(gb=y) then s:=s+850;

    if s>max then max:=s;

    tatol:=tatol+max;

    writeln(maxname);

    writeln(max);

    writeln(tatol);

    end.

  • 0
    @ 2008-11-08 11:12:07

    var

    a,mon,mo,n,i,most:longint;

    k:char;

    na:array[1..101] of string;

    fi,cl,ar: longint;

    ad,xb:char;

    begin

    readln(a );

    for i:=1 to a do

    begin

    mo:=0;

    while not eoln do

    begin

    read(k);

    if k' ' then na[i]:=na[i]+k

    else begin

    read (fi) ;

    read(cl);

    k:=' ';

    while k=' ' do

    read(k);

    ad:=k;

    k:=' ';

    while k=' ' do

    read(k);

    xb:=k;

    read(ar);

    end;

    end;

    readln;

    if (fi>80) and (ar>=1) then mo:=mo+8000;

    if (fi>85) and (cl>80) then mo:=mo+4000;

    if fi>90 then mo:=mo+2000;

    if (fi>85) and (xb='Y') then mo:=mo+1000;

    if (cl>80) and (ad='Y') then mo:=mo+850;

    if mo>most then begin most:=mo ; n:=i; end;

    mon:=mon+mo;

    end;

    writeln(na[n]);

    writeln(most);

    writeln(mon);

    end.

  • 0
    @ 2008-11-07 17:04:11

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

  • 0
    @ 2008-11-06 16:16:54

    program money;

    var N,i,j,l,x,y:longint;

    code:integer;

    t:string;

    a:array[1..100] of string;

    b:array[1..100,1..2] of longint;

    c:array[1..100,1..2] of string;

    d:array[1..100] of longint;

    s:array[1..101] of longint;

    max:array[1..2] of longint;

    begin

    readln(N);

    for i:=1 to N do

    begin

    readln(a[i]);

    l:=pos(' ',a[i]);

    if a[i][l+3]='0' then x:=1 else x:=0;

    if a[i][l+x+6]='0' then y:=1 else y:=0;

    if x=0 then t:=copy(a[i],l+1,2) else t:='100';

    val(t,b,code);

    if x=0 then

    begin

    if y=0 then t:=copy(a[i],l+4,2) else t:='100';

    end

    else

    if y=0 then t:=copy(a[i],l+5,2) else t:='100';

    val(t,b,code);

    c:=copy(a[i],l+7+x+y,1);

    c:=copy(a[i],l+9+x+y,1);

    t:=copy(a[i],l+11+x+y,1);

    val(t,d[i],code);

    a[i]:=copy(a[i],1,l-1);

    end;

    for i:=1 to N do s[i]:=0;

    for i:=1 to N do

    begin

    if ((b>80) and (d[i]>=1)) then s[i]:=s[i]+8000;

    if ((b>85) and (b>80)) then s[i]:=s[i]+4000;

    if b>90 then s[i]:=s[i]+2000;

    if ((b>85) and (c='Y')) then s[i]:=s[i]+1000;

    if ((b>80) and (c='Y')) then s[i]:=s[i]+850;

    end;

    s[N+1]:=0;

    for i:=1 to N do s[N+1]:=s[N+1]+s[i];

    max[1]:=-1;

    for i:=1 to N do

    if s[i]>max[1] then begin

    max[1]:=s[i];

    max[2]:=i;

    end;

    writeln;

    write(a[max[2]]);

    writeln;

    write(max[1]);

    writeln;

    write(s[N+1]);

    end.

  • 0
    @ 2008-11-05 12:41:21

    var

    s:array[1..101] of string;

    a,q,b,f:array[1..101] of longint;

    x,xb:array[1..101] of char;

    n,i,j,k,l,tot:longint;

    t:string;

    begin

    readln(n);

    for i:=1 to n do

    begin

    readln(t);

    for j:=1 to length(t) do

    if t[j]=' ' then begin s[i]:=copy(t,1,j-1);break;end;

    for k:=j+1 to length(t) do

    if t[k]=' ' then

    begin for l:=j+1 to k-1 do q[i]:=q[i]*10+ord(t[l])-ord('0');break;end;

    for j:=k+1 to length(t) do

    if t[j]=' ' then

    begin for l:=k+1 to j-1 do b[i]:=b[i]*10+ord(t[l])-ord('0');break;end;

    x[i]:=t[j+1];xb[i]:=t[j+3];

    for k:=j+5 to length(t) do

    f[i]:=f[i]*10+ord(t[k])-ord('0');

    end;

    for i:=1 to n do

    begin

    if (q[i]>80)and(f[i]>=1) then a[i]:=a[i]+8000;

    if (q[i]>85)and(b[i]>80) then a[i]:=a[i]+4000;

    if (q[i]>90) then a[i]:=a[i]+2000;

    if (q[i]>85)and(xb[i]='Y') then a[i]:=a[i]+1000;

    if (b[i]>80)and(x[i]='Y') then a[i]:=a[i]+850;

    tot:=tot+a[i];

    end; j:=1;

    for i:=1 to n do if a[i]>a[j] then j:=i;

    writeln(s[j]);writeln(a[j]);write(tot);

    end.

信息

ID
1001
难度
5
分类
模拟 点击显示
标签
递交数
39089
已通过
12717
通过率
33%
被复制
121
上传者