var st,xm,xm1,qmm,bjj,lww:string; code,len,i,j,n,m,qm,bj,lw,s,zs,sc:longint; gb,xb:char; function sss:string; var i,l:longint; begin i:=0; l:=j; while st[j]<>' ' do begin inc(i); inc(j); end; sss:=copy(st,l,i); end; begin readln(n); for i:=1 to n do begin s:=0; readln(st); len:=length(st); st[len+1]:=' '; j:=1; xm:=sss; inc(j); qmm:=sss; inc(j); bjj:=sss; inc(j); gb:=st[j]; j:=j+2; xb:=st[j]; j:=j+2; lww:=sss; val(qmm,qm,code); val(bjj,bj,code); val(lww,lw,code); if (qm>80) and (lw>=1) then s:=s+8000; if (qm>85) and (bj>80) then s:=s+4000; if qm>90 then s:=s+2000; if (qm>85) and (xb='Y') then s:=s+1000; if (bj>80) and (gb='Y') then s:=s+850; if s>zs then begin zs:=s; xm1:=xm; end; sc:=sc+s; end; writeln(xm1); writeln(zs); writeln(sc); end.
tyvj 1002 一道模拟题 主要是一个字符串读入与分割 我读的比较麻烦了 简单的读法如下
read(ch);
while ch<>' ' do
begin
name:=name+ch;
read(ch);
end;
begin read(n); for l:=1 to n do begin s:=true; for i:=1 to 9 do begin for m:=1 to 9 do b[m]:=false; for j:=1 to 9 do begin read(a[i,j]); if b[a[i,j]]=true then s:=false else b[a[i,j]]:=true; end; end; for j:=1 to 9 do begin for m:=1 to 9 do b[m]:=false; for i:=1 to 9 do begin if b[a[i,j]]=true then begin s:=false; break; end else b[a[i,j]]:=true; end; end; for i:=0 to 2 do for j:=0 to 2 do gong(i*3+1,j*3+1); if s=false then writeln('Wrong') else writeln('Right'); end; end.
tyvj 1093 这个题是一个比较简单的模拟 话说测试数据 非常之... 开始读数时 没读完 直接break 了 最后竟然80 分...
此题解法1 同上
解法2 设3数组
可以遍历一遍记录得出答案
先设三个数组
a:array[1..9,1..9]of boolean;一到九行每一行1到9出现的情况
b:array[1..9,1..9]of boolean;一到九列每一列1到9出现的情况
c:array[1..9,1..9]of boolean;一到九行个九宫格每一个1到9出现的情况
true为出现,false为没出现
先全部清为false
依次读入每个数X(i,j)
对应的项分别是a[i,x] b[j,x] c[((i-1) div 3)*3+((j-1) div 3)+1,x]
解法3 非常之变态 不知道谁想出的。。。 很无脑。
每个数独的每行每列都计算一下加和(还有每个九宫格),如果是的话和都必为45
如果有一个不是45的话 则整个数独就不成立
并注意 数独全为5的特殊情况。
count 数字统计
var j,t,sum,i,n:longint; sort:array[1..10001] of longint; b,a:array[1..200000] of longint; procedure qsort(head,tail:longint); var i,j,temp,x:longint; begin if head >= tail then exit; i:=head - 1; j:=tail + 1; temp:=a[(head + tail) div 2]; while i < j do begin repeat inc(i) until a[i] >= temp; repeat dec(j) until a[j] <= temp; if i < j then begin x := a[i]; a[i] := a[j]; a[j] := x; end; end; qsort(head,j); qsort(j + 1,tail); end; begin read(n); for i := 1 to n do read(a[i]); qsort(1,n); sum := 0; j := 0; for i:=1 to n do if a[i]=a[i + 1] then inc(sum) else begin inc(j); b[j] := sum + 1; sum := 0; sort[j] := a[i]; end; for i:=1 to j do writeln(sort[i],' ',b[i]); end.
快排 搞定 ~