Quantcast
Channel: CodeChef Discuss - latest questions
Viewing all articles
Browse latest Browse all 39796

NUMFACT - Where the difference is coming.

$
0
0
import math
def factorize(n):
    factors = []
    number = n
    factor = 2

    while number > 1:
        factor = nextp(number, factor)
        factors.append(factor)
        number /= factor
    return factors


def nextp(n, f):
    if n % 2 == 0:
        return 2
    for x in xrange(max(f, 3), int(math.sqrt(n) + 1), 2):
        if n % x == 0:
            return x
    return n



def primes(n):
    if n<=2:
        return []
    sieve=[True]*(n+1)
    for x in range(3,int(n**0.5)+1,2):
        for y in range(3,(n//x)+1,2):
            sieve[(x*y)]=False

    return [2]+[i for i in range(3,n,2) if sieve[i]]

a = primes(1001)

def factors(n):
    b = []
    q = 0
    dummy = n
    while n>1:
        while n%a[q]==0:
            b.append(a[q])
            n = n/a[q]
        q+=1
    return b

t = input()
for i in xrange(t):
    n = input()
    z = map(int,raw_input().split())

    d = {}
    for j in z:
        dum = factorize(j)
        for q in dum:
            if q in d:
                d[q]+=1
            else:
                d[q] = 1



    print reduce(lambda x, y: x * y,[d[x] + 1 for x in d])

If i'm using the factorize method i'm getting it AC(accepted) but if i use the factors method i'm getting WA(Wrong Answer) for large input and AC for small input, you can see both are doing the same thing but why the difference.


Viewing all articles
Browse latest Browse all 39796

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>