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 math
n=int(input())
a=list(map(int,input().split()))
arr = [0]*(10**6+1)
def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            while temp%i==0:
                temp //= i
            arr.append(i)

    if temp!=1:
        arr.append(temp)

    if arr==[]:
        arr.append(n)

    return arr
gcdmax=a[0]
for num in a:
    if num==1:arr[1]+=1
    else:
        gcdmax = math.gcd(gcdmax, num)
        for s in factorization(num):
            arr[s]+=1
ans=max(arr)
if ans==1 or ans==arr[1]:
    print("pairwise coprime")
else:

    if gcdmax==1:
        print("setwise coprime")
    else:
        print("not coprime")

Submission status: Wrong Answer

Solution code:
import math
n=int(input())
a=list(map(int,input().split()))
arr = [0]*(10**6+1)
def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            while temp%i==0:
                temp //= i
            arr.append(i)

    if temp!=1:
        arr.append(temp)

    if arr==[]:
        arr.append(n)

    return arr
gcdmax=a[0]
for num in a:
    gcdmax = math.gcd(gcdmax, num)
    for s in factorization(num):
        arr[s]+=1
ans=max(arr)
if ans==1 or ans==arr[1]:
    print("pairwise coprime")
else:

    if gcdmax==1:
        print("setwise coprime")
    else:
        print("not coprime")

Submission status: Wrong Answer

Solution code:
import math
n=int(input())
a=list(map(int,input().split()))
arr = [0]*(10**6+1)
def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            while temp%i==0:
                temp //= i
            arr.append(i)

    if temp!=1:
        arr.append(temp)

    if arr==[]:
        arr.append(n)

    return arr
gcdmax=a[0]
for num in a:
    gcdmax = math.gcd(gcdmax, num)
    for s in factorization(num):
        arr[s]+=1
ans=max(arr)
if ans==1:
    print("pairwise coprime")
else:

    if gcdmax==1:
        print("setwise coprime")
    else:
        print("not coprime")

Submission status: Wrong Answer

Solution code:
import math
n=int(input())
a=list(map(int,input().split()))
arr = [0]*(10**6+1)
def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            while temp%i==0:
                temp //= i
            arr.append(i)

    if temp!=1:
        arr.append(temp)

    if arr==[]:
        arr.append(n)

    return arr

for num in a:
    for s in factorization(num):
        arr[s]+=1
ans=max(arr)
if ans==1:
    print("pairwise coprime")
else:
    ans=a[0]
    for i in a:
        ans=math.gcd(ans,i)
    if ans==1:
        print("setwise coprime")
    else:
        print("not coprime")

Submission status: Wrong Answer

Solution code:
import math


def get_sieve_of_eratosthenes(n):
    prime = []
    limit = math.sqrt(n)
    data = [i + 1 for i in range(1, n)]
    while True:
        p = data[0]
        if limit <= p:
            return prime + data
        prime.append(p)
        data = [e for e in data if e % p != 0]


data = get_sieve_of_eratosthenes(10 ** 6)
n=int(input())
a=list(map(int,input().split()))
arr = [0]*(10**6+1)
def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            while temp%i==0:
                temp //= i
            arr.append(i)

    if temp!=1:
        arr.append(temp)

    if arr==[]:
        arr.append(n)

    return arr

for num in a:
    for s in factorization(num):
        arr[s]+=1
ans=max(arr)
if ans==1:
    print("pairwise coprime")
else:
    ans=a[0]
    for i in a:
        ans=math.gcd(ans,i)
    if ans==1:
        print("setwise coprime")
    else:
        print("not coprime")

Submission status: Wrong Answer

Solution code:
import math


def get_sieve_of_eratosthenes(n):
    prime = []
    limit = math.sqrt(n)
    data = [i + 1 for i in range(1, n)]
    while True:
        p = data[0]
        if limit <= p:
            return prime + data
        prime.append(p)
        data = [e for e in data if e % p != 0]


data = get_sieve_of_eratosthenes(10 ** 6)
n=int(input())
a=list(map(int,input().split()))
arr = [0]*(10**6+1)
def factorization(n):
    temp = n
    flag=0
    a=[]
    for i in data:
        if i>=int(-(-n**0.5//1))+1:
            break
        if temp%i==0:
            flag=1
            while temp%i==0:
                temp //= i
            a.append(i)
    if flag==0:
        a.append(n)
    return a


f=False
for num in a:
    for s in factorization(num):
        arr[s]+=1
ans=max(arr)
if ans==1:
    print("pairwise coprime")
else:
    ans=a[0]
    for i in a:
        ans=math.gcd(ans,i)
    if ans==1:
        print("setwise coprime")
    else:
        print("not coprime")

Submission status: Wrong Answer

Solution code:
#高速素因数分解  osa_k法 
def osa_k(a):
    tmp = set()
    while a > 1:
        tmp.add(sieve[a])
        a //= sieve[a]
    return tmp

    # 初期入力
import math
import sys
from bisect import bisect_left
from functools import reduce
input = sys.stdin.readline  #文字列では使わない
N = int(input())
A = list(map(int, input().split()))
used =set()

#not coprimeの判定
gcd_a =reduce(math.gcd,A)
if gcd_a !=1:
    ans ="not coprime"

#pairwise coprimeの判定
else:
    MAXN =10**6 +10
    #osa_k法
    sieve = [i for i in range(MAXN+1)]
    p = 2
    while p*p <= MAXN:
        if sieve[p] == p:
            for q in range(2*p,MAXN+1,p):
                if sieve[q] == q:
                    sieve[q] = p
        p += 1
    
    for a in A:
        aa =osa_k(a)
        if used & aa:
            ans ="setwise coprime"
            break #共通要素があったらpair_wではない→set_w
        used |=aa
    ans ="pairwise coprime"
print(ans)

Submission status: Wrong Answer

Solution code:
import math

n = int(input())
a = list(map(int, input().split()))


def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            cnt=0
            while temp%i==0:
                cnt+=1
                temp //= i
            arr.append([i, cnt])

    if temp!=1:
        arr.append([temp, 1])

    if arr==[]:
        arr.append([n, 1])

    return arr


def is_pairwise():
    cs = [0] * 1000010
    for i in a:
        for p, _ in factorization(i):
            if cs[p] == 1:
                return False
            cs[p] = 1
    return True


def is_setwise():
    c = a[0]
    for i in a:
        c = math.gcd(c, i)
    return c == 1

a = [i for i in a if i != 1]
if len(a) == 0:
    print('pairwise coprime')
    exit()

if not is_pairwise():
    if is_setwise():
        print('setwise coprime')
    else:
        print('not coprime')
else:
    print('pairwise coprime')

Submission status: Wrong Answer

Solution code:
import math

n = int(input())
a = list(map(int, input().split()))


def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            cnt=0
            while temp%i==0:
                cnt+=1
                temp //= i
            arr.append([i, cnt])

    if temp!=1:
        arr.append([temp, 1])

    if arr==[]:
        arr.append([n, 1])

    return arr


def is_pairwise():
    cs = [0] * 1000010
    for i in a:
        for p, _ in factorization(i):
            if cs[p] == 1:
                return False
            cs[p] = 1
    return True


def is_setwise():
    c = a[0]
    for i in a:
        c = math.gcd(c, i)
    return c == 1

a = [i for i in a if i != 1]
if len(a) == 0:
    print('pairwise coprime')
    exit()

if len(a) != len(set(a)) or not is_pairwise():
    if is_setwise():
        print('setwise coprime')
    else:
        print('not coprime')
else:
    print('pairwise coprime')

Submission status: Wrong Answer

Solution code:
import math

n = int(input())
a = list(map(int, input().split()))


def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            cnt=0
            while temp%i==0:
                cnt+=1
                temp //= i
            arr.append([i, cnt])

    if temp!=1:
        arr.append([temp, 1])

    if arr==[]:
        arr.append([n, 1])

    return arr


def is_pairwise():
    cs = [0] * 1000010
    for i in a:
        for p, _ in factorization(i):
            if cs[p] == 1:
                return False
            cs[p] = 1
    return True


def is_setwise():
    c = a[0]
    for i in a:
        c = math.gcd(c, i)
    return c == 1

a = [i for i in a if i != 1]
if len(a) == 0:
    print('pairwise coprime')
    exit()

if len(a) != len(set(a)) or len(a) > 78600 or not is_pairwise():
    if is_setwise():
        print('setwise coprime')
    else:
        print('not coprime')
else:
    print('pairwise coprime')

Submission status: Wrong Answer

Solution code:
import math

n = int(input())
a = list(map(int, input().split()))


def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True


def is_pairwise():
    ps = []
    for i in range(1001):
        if is_prime(i):
            ps.append(i)
    cs = [0] * 1010
    for i in a:
        for p in ps:
            if i % p == 0:
                if cs[p] == 1:
                    return False
                cs[p] = 1
    return True


def is_setwise():
    c = a[0]
    for i in a:
        c = math.gcd(c, i)
    return c == 1

a = [i for i in a if i != 1]
if len(a) == 0:
    print('pairwise coprime')
    exit()

if len(a) != len(set(a)) or len(a) > 100000 or not is_pairwise():
    if is_setwise():
        print('setwise coprime')
    else:
        print('not coprime')
else:
    print('pairwise coprime')

Submission status: Wrong Answer

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


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


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):
    g = A[0]
    for i in range(1, A.shape[0]):
        g = gcd(A[i], g)
    if g > 1:
        print('not coprime')
        return
    primes = get_primes(1000000)
    if len(A) > len(primes):
        print('setwise coprime')
        return
    for p in primes:
        count = 0
        for a in A:
            if a % p == 0:
                count += 1
        if count > 1:
            print('setwise coprime')
            return
    print('pairwise coprime')


def main(in_file):
    stdin = open(in_file)
    stdin.readline()
    A = np.array([int(x) for x in stdin.readline().split()])
    solve(A)

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)

Submission status: Wrong Answer

Solution code:
import math

n = int(input())
a = list(map(int, input().split()))


def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True


def is_pairwise():
    ps = []
    for i in range(1001):
        if is_prime(i):
            ps.append(i)
    cs = [0] * 1010
    for i in a:
        for p in ps:
            if i % p == 0:
                if cs[p] == 1:
                    return False
                cs[p] = 1
    return True


def is_setwise():
    c = a[0]
    for i in a:
        c = math.gcd(c, i)
    return c == 1

a = [i for i in a if i != 1]
if len(a) == 0:
    print('pairwise coprime')
    exit()

if len(a) != len(set(a)) or len(a) > 78600 or not is_pairwise():
    if is_setwise():
        print('setwise coprime')
    else:
        print('not coprime')
else:
    print('pairwise coprime')

Submission status: Wrong Answer

Solution code:
import math

n = int(input())
a = list(map(int, input().split()))


def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True


def is_pairwise():
    ps = []
    for i in range(1001):
        if is_prime(i):
            ps.append(i)
    cs = [0] * 1010
    for i in a:
        for p in ps:
            if i % p == 0:
                if cs[p] == 1:
                    return False
                cs[p] = 1
    return True


def is_setwise():
    c = a[0]
    for i in a:
        c = math.gcd(c, i)
    return c == 1

if len(a) != len(set(a)) or len(a) > 78600 or not is_pairwise():
    if is_setwise():
        print('setwise coprime')
    else:
        print('not coprime')
else:
    print('pairwise coprime')