我一直在Google Code Jam上练习以前的比赛,这是我第一次处理像这样的长输入。
问题是,如果数字按升序排序,则称为整数,代码将打印介于1和N之间的最后整理数字.1到21之间的最后一个整洁数字是19。 第一行是测试用例的数量,然后是每个案例的数字N.
我编写的代码完全适用于短整数但是当我输入长整数时它就停止了。
这是我的代码:
def isTidy(num):
if len(str(num)) == 1:
return 1
number = str(num)
arr = []
arr2 = []
i = 0
while i < len(number):
arr.append(number[i])
i+=1
j=0
while j< len(number):
arr2.append(number[j])
j+=1
arr2.sort()
if arr == arr2:
return 1
else:
return 0
cases = int(raw_input())
i=0
tidy = -1
while i<cases:
number=raw_input()
j=1
while j < int(number) +1:
if isTidy(j):
tidy = j;
j+=1
print "Case #"+str(i+1)+": " +str(tidy)
i+=1
这是I/O
:
10
132
1000
7
111111111111111110
905
391458953027532635
723897627649600590
11122233441
412223334467890000
522444557790
Case #1: 129
Case #2: 999
Case #3: 7
它只是在案例3之后停止输出,没有例外。