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

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

NATO 음성 기호와 쿼리

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

요약
NATO 음성 문자 변환을 최대 10^18번 적용한 문자열에서 특정 위치의 글자를 답하는 쿼리를 처리한다.
난이도

보통10점 중 7점

유형
수학, 재귀, 분할 정복
정답자
아직 제출이 없습니다

문제

NATO 음성 문자는 통신의 혼란 등을 방지하기 위해 만들어졌으며, 아래 규칙에 따라 알파벳을 단어로 변환한다.

아래 문자열을 일일이 따라칠 필요는 없다. 하단의 '노트' 탭에 각 언어별로 작성되어있다.

알파벳NATO알파벳NATO
AALFANNOVEMBER
BBRAVOOOSCAR
CCHARLIEPPAPA
DDELTAQQUEBEC
EECHORROMEO
FFOXTROTSSIERRA
GGOLFTTANGO
HHOTELUUNIFORM
IINDIAVVICTOR
JJULIETTWWHISKEY
KKILOXXRAY
LLIMAYYANKEE
MMIKEZZULU

예를 들면, "HCPC"라는 문자열은 "HOTELCHARLIEPAPACHARLIE"가 된다.

원래는 각 단어 사이에 공백을 넣지만, 이 문제에서는 편의상 붙여쓰기로 하자.

하이비는 이런 방식의 변환이 너무 재밌어서, 문자열 SS를 들고 와서 아래 쿼리를 적용시키기로 했다.

  • 1 xx: SS에 NATO 음성 문자 변환을 xx번 적용한다. (1≤x≤1018)( 1 \le x \le 10^{18} )
  • 2 pp: SS의 pp번째 글자를 출력한다. (1≤p≤min⁡(∣S∣,1018))( 1 \le p \le \min(|S|, 10^{18}))

하이비는 쿼리가 끝난 뒤에 출력된 글자들을 알고 싶었지만, 문자열의 길이가 너무 길어져서 지친 관계로 여러분들에게 이 작업을 넘기기로 했다.

지친 하이비에게 쿼리의 출력값을 대신 알려주자.

입력

첫째 줄에 알파벳 대문자로만 이루어진 문자열 SS와 쿼리의 횟수 QQ가 주어진다. (1≤∣S∣≤200,000;( 1 \le |S| \le 200\\,000; 1≤Q≤200,000) 1 \le Q \le 200\\,000 )

이어 QQ개의 줄에 걸쳐 쿼리가 주어진다.

출력

2번 쿼리가 들어올 때마다 출력되는 글자를 공백 없이 출력한다.

힌트

친절한 하이비가 NATO 문자열을 모아놓은 배열을 밑에 만들어두었다.

C:

const char* NATO[26] = { "ALFA", "BRAVO", "CHARLIE", "DELTA", "ECHO", "FOXTROT", "GOLF", "HOTEL", "INDIA", "JULIETT", "KILO", "LIMA", "MIKE", "NOVEMBER", "OSCAR", "PAPA", "QUEBEC", "ROMEO", "SIERRA", "TANGO", "UNIFORM", "VICTOR", "WHISKEY", "XRAY", "YANKEE", "ZULU" };

C++:

const string NATO[26] = { "ALFA", "BRAVO", "CHARLIE", "DELTA", "ECHO", "FOXTROT", "GOLF", "HOTEL", "INDIA", "JULIETT", "KILO", "LIMA", "MIKE", "NOVEMBER", "OSCAR", "PAPA", "QUEBEC", "ROMEO", "SIERRA", "TANGO", "UNIFORM", "VICTOR", "WHISKEY", "XRAY", "YANKEE", "ZULU" };

Python:

NATO = ( "ALFA", "BRAVO", "CHARLIE", "DELTA", "ECHO", "FOXTROT", "GOLF", "HOTEL", "INDIA", "JULIETT", "KILO", "LIMA", "MIKE", "NOVEMBER", "OSCAR", "PAPA", "QUEBEC", "ROMEO", "SIERRA", "TANGO", "UNIFORM", "VICTOR", "WHISKEY", "XRAY", "YANKEE", "ZULU" )

Java:

const String NATO[26] = { "ALFA", "BRAVO", "CHARLIE", "DELTA", "ECHO", "FOXTROT", "GOLF", "HOTEL", "INDIA", "JULIETT", "KILO", "LIMA", "MIKE", "NOVEMBER", "OSCAR", "PAPA", "QUEBEC", "ROMEO", "SIERRA", "TANGO", "UNIFORM", "VICTOR", "WHISKEY", "XRAY", "YANKEE", "ZULU" };

예제2

  1. 예제 1

    입력
    HCPC 5
    2 2
    1 1
    2 23
    1 1
    2 100
    
    예상 출력
    CEN
    
  2. 예제 2

    입력
    HIBYE 5
    1 217
    2 256
    2 1000000009
    2 987654
    2 123456789987654321
    
    예상 출력
    NATO