|
发表于 2017-5-15 17:15:11
|
显示全部楼层
思路就是先定义一个判断跳跃数的函数,然后用穷举法依次测试,直到跳跃数与总数的比值是0.99.
- def isjump(n):
- if n<100:
- return False
- else:
- flagup, flagdown = 1, 1
- t1, m1 = n% 10, n//10
- while m1:
- if m1%10<=t1:
- t1, m1 = m1%10, m1//10
- else:
- flagup = 0
- break
- t2, m2 = n% 10, n//10
- while m2:
- if m2%10>=t2:
- t2, m2 = m2%10, m2//10
- else:
- flagdown = 0
- break
- if flagup == 0 and flagdown == 0:
- return True
- else:
- return False
- count = 0
- index = 0
- while True:
- index += 1
- if isjump(index):
- count += 1
- if count/index == 0.99:
- print(index)
- break
复制代码
输出:
1587000
[Finished in 2.5s]
另外,一种是变成字符串来判断,但是运算时间相对会长一点。
- def is_jump(n):
- if n < 100:
- return False
- up_flag, down_flag = 0, 0
- l = len(str(n))
- n0 = int(str(n)[0])
- for i in range(1, l):
- n1 = int(str(n)[i])
- if n1 > n0:
- up_flag = 1
- if n1 < n0:
- down_flag = 1
- if up_flag == 1 and down_flag == 1:
- return True
- n0 = n1
- return False
- jumps = 0
- n = 100
- while jumps / n != 0.99:
- if is_jump(n):
- jumps += 1
- n += 1
- print(n)
复制代码
输出:
1587000
[Finished in 5.1s] |
评分
-
查看全部评分
|