CodeChef submission 99312 (PYTH) plaintext list. Status: WA, problem PALIN, contest . By phoenix24 (phoenix24), 2009-09-29 12:18:54.
#!/usr/bin/python lines=int(raw_input()) for i in xrange(lines): number=raw_input().strip() odd=False numparts=[] size=len(number) shstarts=0 if size&1: # [left side reversed,right side] numparts=[number[size/2-1::-1],number[size/2+1:]] shstarts=(size/2)+1 else: #[left side reversed,right side] numparts=[number[size/2-1::-1],number[size/2:]] shstarts=size/2 revl=numparts[0] right=numparts[1] numparts.sort() if (revl is numparts[1]) and (revl is not right): if size&1: print ''.join([number[:(size/2)+1],revl]) else: print ''.join([number[:size/2],revl]) else: #palindrome of left equal or less than rhs inc left then mirror fh='' nresult=number[:shstarts].rstrip('9') nrsize=len(nresult) if nrsize<shstarts : if nrsize==0: fh=''.join(['1','0'*shstarts]) else: fh=''.join([nresult[:-1],chr(ord(nresult[-1])+1),'0'*(shstarts-nrsize)]) else: fh=''.join([number[:shstarts-1],chr(ord(number[shstarts-1])+1)]) print ''.join([fh,fh[size/2-1::-1]])
Comments

