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

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

직접 고르는 계산

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

요약
사용 가능한 숫자와 정확히 W번의 덧셈 또는 곱셈을 한 자리 수에서 왼쪽부터 차례로 적용해 각 목표값에 도달할 수 있는지 판정한다.
난이도

보통10점 중 5점

유형
완전 탐색, 동적 계획법, 수학, 구현
정답자
아직 제출이 없습니다

문제

워털루에 가 본 적이 있다면 거위를 본 적이 있을 것이다. 그런데 계산기로 거위를 만들어 낼 수 있을까? 66에서 시작해 77을 더하고, 66을 곱하고, 88을 곱하고, 77을 더하고, 88을 곱하고, 마지막으로 77을 곱하면 3533635336이 된다. 이 계산기를 거꾸로 뒤집으면 gEESE라고 읽힌다.

거꾸로 뒤집은 계산기에 나타난 gEESE

이런 장난을 자동으로 만들어 주는 프로그램을 작성하려고 한다. 그런데 이 계산기는 고장 난 버튼이 많다. 아직 작동하는 연산자는 ++와 ×\times뿐이고, 숫자 키도 일부만 눌린다. 목표 값이 주어졌을 때, 한 자리 숫자 입력과 정해진 횟수의 연산만으로 반쯤 고장 난 계산기가 그 값에 도달할 수 있는지 판단하라.

참고: 이 계산기는 연산자를 입력하는 즉시 계산을 수행하며, 일반적인 연산 우선순위를 따르지 않는다. 예를 들어 2+3×42 + 3 \times 4는 왼쪽부터 차례로 계산되어 (2+3)×4=20(2 + 3) \times 4 = 20이 되고, 2+12=142 + 12 = 14가 되지 않는다.

입력

첫째 줄에는 반드시 사용해야 하는 연산의 횟수 WW가 주어진다 (0≤W≤60 \le W \le 6).

둘째 줄에는 작동하는 숫자 키의 개수 DD가 주어진다 (1≤D≤101 \le D \le 10).

이어지는 DD개의 줄에는 각각 작동하는 숫자가 하나씩 주어진다. 이 숫자들은 00부터 99까지의 서로 다른 정수이다.

그다음 줄에는 목표 값의 개수 VV가 주어진다 (1≤V≤51 \le V \le 5).

이어지는 VV개의 줄에는 각각 00 이상 50000005000000 이하의 정수가 하나씩 주어지며, 이는 계산기에 나타나게 하고 싶은 목표 값이다.

출력

목표 값마다 한 줄씩, 모두 VV개의 줄을 출력한다. 각 목표 값에 대해, DD개의 주어진 숫자로 정확히 WW번의 연산을 사용해 그 값에 도달할 수 있으면 Y를, 도달할 수 없으면 N을 출력한다.

정확히 말하면, 목표 값 TT는 다음과 같이 도달할 수 있으면 가능한 것이다: DD개의 숫자 중 하나에서 시작하여, 그 숫자들 중 하나를 더하거나 곱하는 연산을 정확히 WW번 수행해 TT에 도달하는 경우이다. 숫자는 여러 번 다시 사용할 수 있고, 모든 숫자를 사용할 필요는 없다. 여러 자리 수를 한 번에 입력할 수는 없다.

예제2

  1. 예제 1

    입력
    6
    3
    6
    7
    8
    1
    35336
    
    예상 출력
    Y
    
  2. 예제 2

    입력
    3
    2
    4
    9
    2
    97
    88
    
    예상 출력
    N
    Y