Skip to content

Instantly share code, notes, and snippets.

View ssanin82's full-sized avatar

Sanin Sergiy ssanin82

View GitHub Profile
class SegmentTree:
def __init__(self, n, a, combine):
self.n = n
self.tree = [0] * 2 * self.n
self.op = combine
for i in range(n):
self.tree[n + i] = a[i]
for i in range(self.n - 1, 0, -1):
self.tree[i] = self.op(self.tree[i << 1], self.tree[i << 1 | 1])
def get_primes_to(n):
D, q = {}, 2
while q <= n:
if q not in D:
yield q
D[q * q] = [q]
else:
for p in D[q]:
D.setdefault(p + q, []).append(p)
del D[q]
import random
def gcd(a, b):
a = abs(a)
b = abs(b)
while a:
a, b = b % a, a
return b
def get_primes_under(n):
primes = list()
sieve = [0] * (n + 1)
for i in xrange(2, n):
if not sieve[i]:
primes.append(i)
for j in xrange(i + i, n, i):
sieve[j] = 1
return primes
def is_square(integer):
root = math.sqrt(integer)
if int(root + 0.5) ** 2 == integer:
return True
else:
return False
def get_prime_factors(n):
dd = defaultdict(lambda: 0)
if n > 1:
i = 2
while i * i <= n:
if n % i == 0:
dd[i] += 1
n /= i
i = 2
else:
def get_cycle_len(num):
found_remainders = [0] * num
value = 1
position = 0
while not found_remainders[value] and value:
found_remainders[value] = position
value *= 10
value %= num
position += 1
private int sumOfFactorsPrime(int number, int[] primelist) {
int n = number;
int sum = 1;
int p = primelist[0];
int j;
int i = 0;
while (p * p <= n && n > 1 && i < primelist.Length) {
p = primelist[i];
i++;
def base_n(num, base, numerals="0123456789abcdefghijklmnopqrstuvwxyz"):
if not num:
return numerals[0]
res = ""
while num:
res = numerals[num % base] + res
num //= base
return res
import math
def rotate(n):
digs = int(math.log10(n))
return (10 ** digs) * (n % 10) + n // 10