Link:
https://www.hackerrank.com/challenges/kaPRekar-numbers
1from__future__importprint_function234deffind_kaprekar(num):56num_square = str(num ** 2)78iflen(num_square) == 1:9ifnum == 1:10print(num, end ='')11returnTrue12eliflen(num_square) % 2 ==0:13d = len(num_square) / 214ifnum == int(num_square[0:d]) + int(num_square[d:2*d]):15print(num, end ='')16returnTrue17else:18d = len(num_square) // 219ifnum == int(num_square[0:d]) + int(num_square[d:(2*d+1)]):20print(num, end ='')21returnTrue2223242526defmain():2728p =int(raw_input())29q =int(raw_input())3031have_kaprekar_num =False3233foriinxrange(p, q+1):34iffind_kaprekar(i):35have_kaprekar_num =True3637ifhave_kaprekar_num ==False:38print("INVALID RANGE")39else:40print()4142main()
//其他1
1defis_kaprekar(n):2squared = str(n ** 2)3mid = len(squared) -len(str(n))4a = int(squared[mid:])#这种写法更简便5b = int(squared[:mid])iflen(squared) > 1else06returna + b == n#直接返回一个判断式子78p =int(raw_input())9q =int(raw_input())1011kaprekars = [str(x)forxinxrange(p, q + 1)ifis_kaprekar(x)]12print''.join(kaprekars)ifkaprekarselse'INVALID RANGE'#join函数的使用
//其他2
1importsys23p =int(sys.stdin.readline())4q =int(sys.stdin.readline())56kaprekar = [1, 9, 45, 55, 99, 297, 703, 999, 2223, 2728, 4950, 5050, 7272, 7777, 9999, 17344, 22222, 77778, 82656, 95121, 99999]#更省资源,因为数量不多,所以干脆一次性算出7ans = [str(k)forkinkaprekarifk>=pandk<=q]8ifans:9print''.join(ans)10else:11print'INVALID RANGE'