- ISBN号码
- 2009-07-21 17:24:07 @
高手帮帮我吧
var
a:array[1..10] of integer;
s:string;
i,j,k:longint;
begin
readln(s);
i:=1;
for j:=1 to length(s) do
begin
if s[j]'-' then begin
a[i]:=ord(s[j])-ord('0');
i:=i+1;
end;
end;
for i:=1 to 9 do k:=k+a[i]*i;
k:=k mod 11;
if (k=a[10])or((k=10)and('X'=s[10])) then write('Right')
else
begin
write(copy(s,1,length(s)-1));
if k=10 then write('X')
else write(chr(k+48));
end;
end.
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案错误...程序输出比正确答案长
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案错误...程序输出比正确答案长
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:80 有效耗时:0ms
5 条评论
-
sdvsdv LV 10 @ 2009-07-21 19:58:17
上面的我写的错了,LZ别看
-
2009-07-21 19:57:54@
对了对了....原来这(K=10)AND(S[10]='X')这个S[10]应该改为S[13]
-
2009-07-21 19:55:30@
if (k=a[10])or((k=10)and('X'=s[10])) then write('Right')
这句话有问题.
k和a[10]是不同类型的,k是整形,a[10]是字符.
应改为:if (chr(k+48)=a[10])or((k=10)and('X'=s[10])) then write('Right') -
2009-07-21 19:33:35@
我快要死了..
可数组开了大点还是80分啊,边界好像没错啊
-
2009-07-21 19:09:35@
我来帮帮你吧
注意边界,数组开大点……
var
s:string;
i,j,f:longint;
k:string;
begin
readln(s);
for i:=1 to 11 do
begin
if s[i]'-' then
begin
f:=f+1;
j:=j+(ord(s[i])-48)*f;
end;
end;
j:=j mod 11;
if j=10 then k:='X' else k:=chr(j+48);
if k=s[13] then write('Right') else
begin
for i:=1 to 12 do
write(s[i]);
writeln(k);
end;
end.
- 1