目录
1、求阶乘
'''
将求n!变成求n的阶乘中有多少个5相乘(因为2*5=10,而2在阶乘中远比5要多,所以考虑5的个数,就能得出尾数0的个数)
利用二分查找5的个数等于k值(n!是一个有序序列,利用二分降低复杂度)
# '''
import os
import sys
# 请在此输入您的代码
def check(n):
res = 0
while n: #一层一层地把5给剥削出来,得到最新的被剥削完的5,再进行一层
n //= 5
res += n
return res
k = int(input())
l,r = -1,int(1e19)+1 #取一个负数,取一个极大的数
while l+1 != r:
mid = (l+r)//2
if check(mid) < k:
l = mid
else:
r = mid
if check(r) == k:
print(r)
else:
print(-1)
2、移动
import os
import sys
# 请在此输入您的代码
x = 0
y = 0
a = input()
for i in a:
if i == 'U':
x-=1
if i == 'D':
x+=1
if i == 'L':
y-=1
if i == 'R':
y+=1
print(x,y)
3、0的个数
import os
import sys
# 请在此输入您的代码
s = input() #这回不用转换成整数,直接对字符串操作
count = 0
for i in s[::-1]: #字符串逆序
if i == '0':
count += 1
else:
break
print(count)
4、方阵
import os
import sys
# 请在此输入您的代码
print(int(int(input()) ** (1 / 2))) #开方取整即可
5、特殊的数
import os
import sys
# 请在此输入您的代码
for i in range(10,8518):
b = str(i)
c = int(b,16) #进制转换小技巧
if c%i == 0:
print(i)
break
6、六个0
import os
import sys
# 请在此输入您的代码
for i in range(2023,100000):
if str(bin(i))[-6:] == '000000':
print(i)
break
7、英文字母
import os
import sys
# 请在此输入您的代码
i = int(input())
print(chr(ord('A')+i-1)) #得到A的十进制,再利用chr()转换成字符
8、天数
import os
import sys
# 请在此输入您的代码
import datetime as date #Python的内置库
n = date.datetime(1949,10,1)
m = date.datetime(2022,1,1)
s = m-n
print(s.days)