0

我认为我的算法是正确的(做得很糟糕)但是我在 ideone.com 中得到了想要的输出。但在 SPOJ 中,它一直说“运行时错误 NZEC”。请提出一些更改以使其正确。

这是问题的链接:

http://www.spoj.com/problems/LASTDIG/

这是我的代码:

import sys;
a=dict();
c=dict();
a[1]=[1,1,1,1];
a[2]=[2,4,8,6];
a[3]=[3,9,7,1];
a[4]=[4,6,4,6];
a[5]=[5,5,5,5];
a[6]=[6,6,6,6];
a[7]=[7,9,3,1];
a[8]=[8,4,2,6];
a[9]=[9,1,9,1];
a[10]=[0,0,0,0];
inp=sys.stdin.read().strip().split();
t=int(inp[0]);
readat=1;
for i in xrange(t):
    m,n=map(long,inp[readat:readat+2]);
    r=n%4;
    s=m%10;
    c[i]=a[s][r-1];
    readat=readat+2;
for i in xrange(t):
    print c[i]; 
4

1 回答 1

1

第一件事。您正在使用 Python,您不必以分号“;”结束语句!(如果你有写很多 C 程序的习惯,没关系!)

其次,当你可以只使用 1 时,你不应该使用 2 for 循环。(打印可以在第一个循环本身内执行,但这并不是最有效的方式)

您可能知道的NZEC错误代表Non Zero Exit CodePython 为您的代码返回的错误,原因是KeyError. 请注意您的字典如何a具有键 1 到 10 而不是0m%10当 s 是 10 的倍数时将为 0。因此a[10]实际上应该是a[0]

于 2013-11-07T23:00:32.840 回答