아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

약수

시간 제한2초메모리 제한512 MB

요약
n과 n의 약수로 만든 식이 주어질 때, 변수에 어떤 약수를 대입해도 식의 값이 항상 같은지 판정한다.
난이도

어려움10점 중 8점

유형
정수론, 트리, 수학, 재귀
정답자
아직 제출이 없습니다

문제

자연수 nn의 약수들을 생각한다. nn의 모든 약수의 집합을 D(n)D(n)이라 하자. 다음 세 가지로 이루어진 식이 주어진다.

  • D(n)D(n)에 속하는 상수,
  • D(n)D(n)의 임의의 값을 가질 수 있는 변수,
  • 두 값의 최대공약수와 최소공배수를 계산하는 두 개의 이항 함수.

주어진 식의 값이 변수에 어떤 값을 대입하든 항상 같은지, 즉 식이 상수 함수를 나타내는지 판별하여라.

입력

첫째 줄에 테스트 케이스의 수 tt (1≤t≤10001 \le t \le 1000)가 주어진다. 이어지는 tt개의 각 줄에는 하나의 테스트 케이스가 주어진다.

각 줄은 정수 nn (1≤n≤10181 \le n \le 10^{18})으로 시작하고, 그 뒤에 식의 서술이 이어진다. 식은 상수, 변수, 또는 함수 적용 중 하나이다.

  • 각 수는 상수이며, nn의 양의 약수이다.
  • 변수는 길이가 55 이하인 영어 소문자의 나열이다. 같은 글자열은 같은 변수를 나타낸다.
  • 이름 NWD와 NWW는 각각 최대공약수와 최소공배수를 계산하는 함수를 나타낸다. 함수 이름 뒤에는 공백 하나가 오고, 그 뒤에 공백으로 구분된 두 인자의 서술이 이어진다. 각 인자는 그 자체로 하나의 식이다(따라서 식의 서술은 재귀적이다).

입력 파일 전체의 크기는 22 MB를 넘지 않는다.

출력

tt개의 줄에 각 테스트 케이스의 답을 출력한다. 각 테스트 케이스에 대해, 변수 값에 관계없이 식이 상수 함수를 나타내면 TAK(폴란드어로 예)를, 그렇지 않으면 NIE(폴란드어로 아니오)를 출력한다.

예제5

  1. 예제 1

    입력
    3
    24 NWD 3 NWW x 12
    15 NWD 15 nwd
    10 10
    
    예상 출력
    TAK
    NIE
    TAK
    
  2. 예제 2

    입력
    3
    1 1
    1 NWD x y
    100 50
    
    예상 출력
    TAK
    TAK
    TAK
    
  3. 예제 3

    입력
    4
    100 x
    20 NWD z 20
    20 NWD z 1
    12 NWW y 12
    
    예상 출력
    NIE
    NIE
    TAK
    TAK
    
  4. 예제 4

    입력
    2
    8 NWD 2 NWW x 2
    8 NWW 2 NWD x 2
    
    예상 출력
    TAK
    TAK
    
  5. 예제 5

    입력
    2
    12 NWW 6 NWD x 4
    12 NWD z 6
    
    예상 출력
    NIE
    NIE