Link:
https://www.hackerrank.com/challenges/kaPRekar-numbers
1 from __future__ import print_function 2 3 4 def find_kaprekar(num): 5 6 num_square = str(num ** 2) 7 8 if len(num_square) == 1: 9 if num == 1:10 print (num, end = ' ')11 return True12 elif len(num_square) % 2 == 0:13 d = len(num_square) / 214 if num == int(num_square[0:d]) + int(num_square[d:2*d]):15 print (num, end = ' ')16 return True17 else:18 d = len(num_square) // 2 19 if num == int(num_square[0:d]) + int(num_square[d:(2*d+1)]):20 print (num, end = ' ')21 return True22 23 24 25 26 def main():27 28 p = int(raw_input())29 q = int(raw_input())30 31 have_kaprekar_num = False32 33 for i in xrange(p, q+1):34 if find_kaprekar(i):35 have_kaprekar_num = True36 37 if have_kaprekar_num == False:38 print("INVALID RANGE")39 else:40 print()41 42 main()
//其他1
1 def is_kaprekar(n): 2 squared = str(n ** 2) 3 mid = len(squared) - len(str(n)) 4 a = int(squared[mid:]) # 这种写法更简便 5 b = int(squared[:mid]) if len(squared) > 1 else 0 6 return a + b == n # 直接返回一个判断式子 7 8 p = int(raw_input()) 9 q = int(raw_input())10 11 kaprekars = [str(x) for x in xrange(p, q + 1) if is_kaprekar(x)]12 print ' '.join(kaprekars) if kaprekars else 'INVALID RANGE' # join函数的使用
//其他2
1 import sys 2 3 p = int(sys.stdin.readline()) 4 q = int(sys.stdin.readline()) 5 6 kaprekar = [1, 9, 45, 55, 99, 297, 703, 999, 2223, 2728, 4950, 5050, 7272, 7777, 9999, 17344, 22222, 77778, 82656, 95121, 99999] # 更省资源,因为数量不多,所以干脆一次性算出 7 ans = [str(k) for k in kaprekar if k>=p and k<=q] 8 if ans: 9 print ' '.join(ans)10 else:11 print 'INVALID RANGE'
新闻热点
疑难解答