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.
快排 搞定 ~