首页 > 学院 > 开发设计 > 正文

ModifiedKaprekarNumbers

2019-11-14 17:11:20
字体:
来源:转载
供稿:网友

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'

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表