数位递增和数位分离
数位递增
一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
【输入格式】 输入的第一行包含一个整数 n。
【输出格式】输出一行包含一个整数,表示答案。
【样例输入】 30 【样例输出】 26
n=int(input())
ans=0
l=[]
for i in range(1,n+1):
a=list(str(i))
a.sort()
b=int(''.join(a))
if b not in l:
l.append(b)
ans+=1
print(ans)
数位分离:
题目:
在1至2019中,有多少个数的数位中包含数字9?
注意:
有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含数字9,在计算只是算一个数。
def is_contains_9(num):
"""It's four, no need to cycle."""
one = num % 10
ten = num // 10 % 10
hundred = num // 100 % 10
thousand = num // 1000 % 10
if 9 in [one, ten, hundred, thousand]:
return True
else:
return False
ans = 0
given_number = 2019
for i in range(1, given_number + 1):
if is_contains_9(i):
# print(i, end=' ') # list all eligible numbers
ans += 1
print('\n', ans, sep='')