打表时,无法通过,示例都过不了 ,取消了打表方式的 Python 代码:
mod = 998244353 # 取余数
def apow(fac, n):
res = 1
while n:
if n & 1:
res = (res * fac) % mod
n >>= 1
fac = (fac * fac) % mod
return res % mod
# 打表
# table = [0, 1]
# for i in range(2, int(1e7-3)):
# table.append((table[-1] * i) % mod)
T = int(input())
for _ in range(T):
n = int(input())
sum_li = (n*(1+n)//2) % mod
sum_li = (sum_li * sum_li) % mod
fac = 1
for i in range(2, n+1):
fac *= i
fac %= mod
mul_li = apow(fac, 2 * n)
# mul_li = apow(table[n], 2 * n)
print(sum_li, mul_li)
补充一下:之前一个地方少乘了一个n
研究了一下,是打表的问题:
1. 不打表的话通过30.0% (运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。)
2. 打表的话通过10.0%(运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。)
看来牛客对python不友好啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~