Problem:


Score : 500 points

Problem Statement

We have N integers. The i-th number is A_i.

\{A_i\} is said to be pairwise coprime when GCD(A_i,A_j)=1 holds for every pair (i, j) such that 1\leq i < j \leq N.

\{A_i\} is said to be setwise coprime when \{A_i\} is not pairwise coprime but GCD(A_1,\ldots,A_N)=1.

Determine if \{A_i\} is pairwise coprime, setwise coprime, or neither.

Here, GCD(\ldots) denotes greatest common divisor.

Constraints

2 \leq N \leq 10^6

1 \leq A_i\leq 10^6

Input

Input is given from Standard Input in the following format:

N
A_1 \ldots A_N

Output

If \{A_i\} is pairwise coprime, print pairwise coprime; if \{A_i\} is setwise coprime, print setwise coprime; if neither, print not coprime.

Sample Input 1

3
3 4 5

Sample Output 1

pairwise coprime

GCD(3,4)=GCD(3,5)=GCD(4,5)=1, so they are pairwise coprime.

Sample Input 2

3
6 10 15

Sample Output 2

setwise coprime

Since GCD(6,10)=2, they are not pairwise coprime. However, since GCD(6,10,15)=1, they are setwise coprime.

Sample Input 3

3
6 10 16

Sample Output 3

not coprime

GCD(6,10,16)=2, so they are neither pairwise coprime nor setwise coprime.



Sample input:
3
3 4 5


Sample output:
pairwise coprime

Submission status: Wrong Answer

Solution code:
import sys
read = sys.stdin.read
readlines = sys.stdin.readlines
from collections import defaultdict
def main():
    n, *a = map(int, read().split())

    maxa = max(a) + 1  # aはint配列
    d = [i for i in range(maxa)]
    for p0 in range(2, maxa):
        if p0 == d[p0]:
            for p1 in range(p0 ** 2, maxa, p0):
                if d[p1] % p0 == 0:
                    d[p1] = p0

    def factorization(f):  # f > maxaだとエラー
        l = []
        t = f
        while True:
            if t == d[t]:
                l.append(d[t])
                break
            else:
                l.append(d[t])
                t = t // d[t]
        return l

    if all([ae == 1 for ae in a]):
        print('pairwise coprime')
        sys.exit()
    d1 = defaultdict(int)
    for ae in a:
        t1 = set(factorization(ae))
        for t1e in t1:
            d1[t1e] += 1

    d1v = tuple(d1.values())
    if max(d1v) == n:
        print('not coprime')
    elif all([i == 1 for i in d1v]):
        print('pairwise coprime')
    else:
        print('setwise coprime')

if __name__ == '__main__':
    main()

Submission status: Wrong Answer

Solution code:
n=int(input())
A=[int(x) for x in input().split()]

u=10**6+1
C=[0]*u
D=[0]*2+[1]*(u-2)

def e():
  n=4
  while n<u:
    D[n]=0
    n+=2
  i=3
  while i*i<u:
    if D[i]:
      n=i*2
      while n<u:
        D[n]=0
        n+=i
    i+=2

def gcd(a,b):
   while a%b:
     a,b=b,a%b
   return b

for a in A:
  C[a]+=1
e()
for i in [x for x in range(2,u) if D[x]==1]:
  if sum(C[i::i])>1:
    break
else:
  print('pairwise coprime')
  exit()

c=A[0]
for a in A:
  c=gcd(c,a)
  if c==1:
    break
else:
  print('not coprime')
  exit()

print('setwise comprime')

Submission status: Wrong Answer

Solution code:
from math import gcd

N=int(input())
A=list(map(int, input().split()))

c=max(A)
D=[0]*(c+1)
div=[0]*(c+1)
P=[]

for i in range(2,c+1):
    if D[i]==0:
        P.append(i)
        D[i]=i
    for j in P:
        if i*j>c  or j>D[i] :
           break
        D[i*j]=j
f=0
for i in A:
    c=gcd(c,i)
    if i==1:
        continue
    temp=i
    if temp==D[temp]:
        div[temp]+=1
        if div[temp]>=2:
            f=1
        continue
    while temp!=D[temp]:
        div[D[temp]]+=1
        if div[temp]>=2:
            f=1
        temp=temp//D[temp]
    if c==1 and f==1:
        break

if max(div)<=1:
    print('pairwise coprime')

elif c==1:
    print('setwise coprime')

else:
    print('not coprime')

Submission status: Wrong Answer

Solution code:
import sys
read = sys.stdin.read
readlines = sys.stdin.readlines
from collections import defaultdict
def main():
    n, *a = map(int, read().split())

    maxa = max(a) + 1  # aはint配列
    d = [i for i in range(maxa)]
    for p0 in range(2, maxa):
        if p0 == d[p0]:
            for p1 in range(p0 ** 2, maxa, p0):
                if d[p1] % p0 == 0:
                    d[p1] = p0

    def factorization(f):  # f > maxaだとエラー
        l = []
        t = f
        while True:
            if t == d[t]:
                l.append(d[t])
                break
            else:
                l.append(d[t])
                t = t // d[t]
        return l

    if all([ae == 1 for ae in a]):
        print('pairwise coprime')
        sys.exit()
    elif 1 in a:
        print('setwise coprime')
        sys.exit()
    d1 = defaultdict(int)
    for ae in a:
        t1 = set(factorization(ae))
        for t1e in t1:
            d1[t1e] += 1

    d1v = tuple(d1.values())
    if max(d1v) == n:
        print('not coprime')
    elif all([i == 1 for i in d1v]):
        print('pairwise coprime')
    else:
        print('setwise coprime')

if __name__ == '__main__':
    main()

Submission status: Wrong Answer

Solution code:
# compiled by pythran
"""
#pythran export main2()
import numpy as np
i4 = np.int32
i8 = np.int64


def factorization(N):
    p = np.zeros(N + 1, i8)
    n_max = int(np.sqrt(N)) + 1
    p[0] = 1
    p[1] = 1
    for i in range(2, n_max):
        if p[i] == 0:
            j = i
            while j < N:
                p[j] = i
                j += i
    return p


def gcd(a, b):
    '''Computes the greatest common divisor of integers a and b using
    Euclid's Algorithm.
    '''
    while b != 0:
        a, b = b, a % b
    return a


def solve(A):
    a = np.sort(A)
    g = a[0]
    for i in range(1, a.shape[0]):
        g = gcd(a[i], g)
    if g > 1:
        return 2
    p_max = a[-1]
    p = factorization(p_max)
    primes_num = 0
    for i in range(p.shape[0]):
        if i == p[i]:
            primes_num += 1
    a_start = 0
    while a[a_start] == 1:
        a_start += 1
        if a_start == a.shape[0]:
            return 0
    a = a[a_start:]
    if len(a) > primes_num:
        return 1
    check = np.zeros(p_max + 1, i8)
    stack = np.empty(20, i8)
    p_stack = 0
    for d in a:
        while d > 1:
            x = p[d]
            for i in range(p_stack):
                if stack[i] == x:
                    break
            else:
                stack[p_stack] = x
                p_stack += 1
            d //= x

        while p_stack > 0:
            p_stack -= 1
            check[stack[p_stack]] += 1

    if check.max() > 1:
        return 1
    else:
        return 0


def main(in_file):
    stdin = open(in_file)
    stdin.readline()
    A = np.array([int(x) for x in stdin.readline().split()])
    ans = solve(A)
    p = ['pairwise coprime', 'setwise coprime', 'not coprime']
    print(p[ans])


def main2():
    main('/dev/stdin')
"""
import os, sys
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
if len(sys.argv) == 1:
    import subprocess
    if p == "":
        pymain = "./" + pymain
    subprocess.call(pymain)
else:
    import gzip, base64, stat
    gz = b'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'
    bin = gzip.decompress(base64.b64decode(gz))
    with open(pymain, "wb") as f:
        f.write(bin)
    os.chmod(pymain, 0o775)