Pagini recente » Cod sursa (job #808104) | Cod sursa (job #1902935) | Cod sursa (job #793439) | Cod sursa (job #1651973) | Cod sursa (job #2606313)
def input_gen_int(fname):
with open(fname, 'rt') as fin:
for line in fin:
for val in line.split():
yield int(val)
def radix_sort(v, max_byte_len):
full_byte = 0xFF
helper = [0 for _ in range(len(v))]
counter = [0 for _ in range(256)]
for i in range(max_byte_len):
counter = [0] * 256
for j in range(len(v)):
counter[v[j] >> (i * 8) & full_byte] += 1
for j in range(1, 256):
counter[j] += counter[j - 1]
for j in range(len(v) - 1, -1, -1):
counter[v[j] >> (i * 8) & full_byte] -= 1;
helper[counter[v[j] >> (i * 8) & full_byte]] = v[j]
v, helper = helper, v
if __name__ == "__main__":
ig = input_gen_int("radixsort.in")
n, a, b, c, = next(ig), next(ig), next(ig), next(ig)
v = []
v.append(b % c);
for i in range(1, n):
v.append((a * v[i - 1] % c + b) % c)
radix_sort(v, 8);
with open("radixsort.out", "wt") as fout:
for i in range(0,len(v),10):
fout.write('{} '.format(v[i]))