if __name__ == '__main__': tot = [0] * 3030 ans = 1 for i inrange(2, 2025): num = i for j inrange(2, i + 1): while num % j == 0: tot[j] += 1 num //= j for i inrange(2, 2025): ans *= (tot[i] // 61 + 1) print(ans)
if __name__ == '__main__': n, m = map(int, input().split()) a = list(map(int, input().split())) minn, maxn = min(a), max(a) for i inrange(1, n + 1): print(max(maxn - i, i - minn), end=' ')
defcheck(k): res = 0 for i inrange(n): res += a[i] // k if a[i] % k == 0: res -= 1 return (res <= m)
if __name__ == '__main__': n, m = map(int, input().split()) a = list(map(int, input().split())) l, r, ans = 1, 10 ** 9, 0 while l <= r: mid = l + r >> 1 if check(mid): ans = mid r = mid - 1 else: l = mid + 1 print(ans)
if __name__ == '__main__': s = input() alpha_tot = [0] * 30 n = len(s)
for i inrange(n): iford('a') <= ord(s[i]) <= ord('z'): alpha_tot[ord(s[i]) - ord('a')] += 1 maxn = max(alpha_tot)
tot = [[0] * (n + 1) for _ inrange(26)] ans = [[0] * (maxn + 1) for _ inrange(26)] st = []
for i inrange(n): iford('a') <= ord(s[i]) <= ord('z'): tot[ord(s[i]) - ord('a')][i] += 1
for i inrange(26): for j inrange(1, n): tot[i][j] += tot[i][j - 1]
for i inrange(n): if s[i] == '(': st.append(i) elif s[i] == ')': for j inrange(26): ans[j][tot[j][i] - tot[j][st[-1]]] += 1 st.pop() for i inrange(26): for j inrange(maxn - 1, -1, -1): ans[i][j] += ans[i][j + 1] q = int(input()) for i inrange(q): x, y = input().split() y = int(y) if y > maxn: print(0) else: print(ans[ord(x) - ord('a')][y])
G
Solution
题目转化为求使得 d910k−1≡0(modn) 的最小 k,d。其中 k 为正整数,d 为整数 1∼9。
经过移项得 10k≡1(modm),其中 m=(n,d)9n
由欧拉定理,10ϕ(m)≡1(modm)。ϕ 为欧拉函数。故答案对应的 k 为 ϕ(m) 的因数。通过试除法可找出所求 k。
deffactor(n): fac = {} while n % 2 == 0: fac[2] = fac.get(2, 0) + 1 n //= 2 i = 3 while i * i <= n: while n % i == 0: fac[i] = fac.get(i, 0) + 1 n //= i i += 2 if n > 1: fac[n] = fac.get(n, 0) + 1 return fac
defphi(fac): res = 1 for p, exp in fac.items(): res *= (p - 1) * (p ** (exp - 1)) return res
if __name__ == '__main__': MOD = 998244353 n = int(input()) ans_k = ans_d = None for d inrange(1, 10): m = 9 * n // math.gcd(d, n) if m % 2 == 0or m % 5 == 0: continue m_fac = factor(m) m_phi = phi(m_fac) phi_fac = factor(m_phi) for p in phi_fac: while m_phi % p == 0: ifpow(10, m_phi // p, m) == 1: m_phi //= p else: break ifpow(10, m_phi, m) != 1: continue if ans_k == Noneor ans_k > m_phi or (ans_k == m_phi and ans_d > d): ans_k, ans_d = m_phi, d if ans_k == None: print(-1) else: ans = ((pow(10, ans_k, MOD) - 1 + MOD) % MOD * pow(9, MOD - 2, MOD) + MOD) % MOD * ans_d % MOD print(ans)
H
Solution
设 Ai 为原始数组,Bik 为经过 k 次变换后的第 i 位。
观察得出,所有 Bik 均可表示为 S 和 Ai 的线性组合。其中 S=i=1∑nAi。故设
defmtx_mul(a, b): res = [[0] * 2for _ inrange(2)] for i inrange(2): for j inrange(2): res[i][j] = (a[i][0] * b[0][j] % mod + a[i][1] * b[1][j] % mod + mod) % mod return res
defmtx_pow(m, k): res = [[1, 0], [0, 1]] while k: if k & 1: res = mtx_mul(res, m) m = mtx_mul(m, m) k >>= 1 return res
if __name__ == '__main__': a0, b0 = 0, 1 n = int(input()) a = list(map(int, input().split())) S = sum(a) M = [[n - 1, 1], [0, -1]] q = int(input()) for i inrange(q): x, y = map(int, input().split()) m = mtx_pow(M, x) ak = ((m[0][0] * a0) % mod + m[0][1] * b0 % mod) % mod bk = ((m[1][0] * a0) % mod + m[1][1] * b0 % mod) % mod print((ak * S % mod + bk * a[y - 1] % mod) % mod)
if __name__ == '__main__': n, m = map(int, input().split()) v = list(map(float, input().split())) w = [10 ** 9] * (n + 1) for i inrange(m): a, b, c, d = map(int, input().split()) if w[a] == 10 ** 9and c: continue if b == 0: w[b] = min(w[b], 1 / d) else: c /= d w[b] = min(w[b], 1 / d + c * w[a]) for i inrange(n): if w[i + 1]: v[i] /= w[i + 1] else: v[i] = 0 print("{:.2f}".format(max(v)))