我快要死了..

高手帮帮我吧

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 条评论

  • @ 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

信息

ID
1484
难度
5
分类
字符串 点击显示
标签
递交数
14454
已通过
4953
通过率
34%
被复制
33
上传者