蓝桥杯2022真题:求阶乘、移动、0的个数、方阵、特殊的数、六个0、英文字母、天数

目录

1、求阶乘

2、移动

3、0的个数

4、方阵

5、特殊的数

6、六个0

7、英文字母

8、天数

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值