找规律,分支原地起爆,还真肝出来了~~
n = int(input())
num = 0
num += str(n)[:-1].count('1')
if n >= 1000000000:
if n >= 2000000000:
num += 1000000000
else:
num += n % 1000000000
num += 900000000 * (n // 1000000000)
n %= 100000000
if n >= 100000000:
if n >= 200000000:
num += 100000000
else:
num += n % 100000000
num += 80000000 * (n // 100000000)
n %= 100000000
if n >= 10000000:
if n >= 20000000:
num += 10000000
else:
num += n % 10000000
num += 7000000 * (n // 10000000)
n %= 10000000
if n >= 1000000:
if n >= 2000000:
num += 1000000
else:
num += n % 1000000
num += 600000 * (n // 1000000)
n %= 1000000
if n >= 100000:
if n >= 200000:
num += 100000
else:
num += n % 100000
num += 50000 * (n // 100000)
n %= 100000
if n >= 10000:
if n >= 20000:
num += 10000
else:
num += n % 10000
num += 4000 * (n // 10000)
n %= 10000
if n >= 1000:
if n >= 2000:
num += 1000
else:
num += n % 1000
num += 300 * (n // 1000)
n %= 1000
if n >= 100:
if n >= 200:
num += 100
else:
num += n % 100
num += 20 * (n // 100)
n %= 100
if n >= 10:
if n >= 20:
num += 10
else:
num += n % 10
num += 1 * (n // 10)
n %= 10
if n >= 1:
num += 1
print(num)
输入中N<=2^30,所以九个0就够用了~