Pagini recente » Cod sursa (job #2298092) | Cod sursa (job #1382203) | Cod sursa (job #3147374) | Cod sursa (job #1701656) | Cod sursa (job #2449853)
#!/usr/bin/env python3
import sys
sys.stdout = open('ssnd.out', 'w')
N, MOD = 10 ** 6 + 10000, 9973
invMod = [0] * MOD
def gcd(a, b):
if b == 0:
return 1, 0, a
else:
x, y, d = gcd(b, a % b)
return y, x - a // b * y, d
for a in range(MOD):
x, _, d = gcd(a, MOD)
x = x % MOD
while x < 0: x += n
invMod[a] = x
p = bytearray((N + 1) // 16 + 1)
primes = [2]
for i in range(3, int(N ** 0.5) + 1, 2):
idx = i // 2
if not p[idx >> 3] & (1 << (idx & 7)):
for j in range(i * i, N + 1, 2 * i):
idx = j // 2
if not p[idx >> 3] & (1 << (idx & 7)):
p[idx >> 3] |= 1 << (idx & 7)
for i in range(3, N, 2):
idx = i // 2
if not p[idx >> 3] & (1 << (idx & 7)):
primes.append(i)
def solve(n):
divs = []
for p in primes:
if n % p == 0:
d = 0
while n % p == 0:
n /= p
d += 1
divs.append((p, d))
if n == 1:
break
numDivs, sumDivs = 1, 1
for p, d in divs:
numDivs = (numDivs * (d + 1)) % MOD
sumDivs = (sumDivs * ((p ** (d + 1) - 1) % MOD) * invMod[p - 1]) % MOD
print(numDivs, sumDivs)
with open('ssnd.in', 'r') as f:
for _ in range(int(f.readline())):
n = int(f.readline())
solve(n)