做了小红书笔试
编程题一道都没做出来,我是five😇
更新-09301247
发现python直接用int就行了,在java的BigInteger和输入输出上浪费了太多时间。写了一下第一道题,不知道对不对:
T = int(input())
while T:
T -= 1
n = int(input())
s = input()
a = ord('9') + 1 # 最小
b = ord('0') - 1 # 最大
# 找到s中的最小最大字符
for c in s:
c = ord(c)
if c < a:
a = c
if c > b:
b = c
p = a - ord('0') # 小于最小的数量
q = ord('9') - b # 大于最大的数量
r = b-a + 1 # [a, b]之间的数量
# 只能是[a,b]
_x = r ** n
# 可以是[0, b],即没有大于最大
_y = (p + r) ** n
# 可以是[a, 9],即没有小于最小
_z = (r + q) ** n
# 总数 - _y - _z + _x
res = 10 ** n - _y - _z + _x
print(res % (10**9 + 7))
更新-09301247
发现python直接用int就行了,在java的BigInteger和输入输出上浪费了太多时间。写了一下第一道题,不知道对不对:
T = int(input())
while T:
T -= 1
n = int(input())
s = input()
a = ord('9') + 1 # 最小
b = ord('0') - 1 # 最大
# 找到s中的最小最大字符
for c in s:
c = ord(c)
if c < a:
a = c
if c > b:
b = c
p = a - ord('0') # 小于最小的数量
q = ord('9') - b # 大于最大的数量
r = b-a + 1 # [a, b]之间的数量
# 只能是[a,b]
_x = r ** n
# 可以是[0, b],即没有大于最大
_y = (p + r) ** n
# 可以是[a, 9],即没有小于最小
_z = (r + q) ** n
# 总数 - _y - _z + _x
res = 10 ** n - _y - _z + _x
print(res % (10**9 + 7))
全部评论
我感觉自己写的没问题,一测通过率9%😅
考的是数学md 太恶心了 中途放弃了
吐了 前两道改来改去都超时只能27% 最后一道dfs写了半天不对 有大佬讲讲怎么做吗?
➕1
上次在另一个志愿已经笔过一次了,这次感觉难度上了一个台阶😥
相关推荐
11-17 17:30
西安航空学院 Java 点赞 评论 收藏
分享