K-동치

시간 제한1초메모리 제한128 MB

요약
양의 정수 구간들의 합집합으로 주어진 집합 K에서 숫자를 서로 바꿔도 K에 계속 속하는 1~9 숫자들의 동치류를 구하는 문제입니다.
난이도

어려움10점 중 8점

유형
수학, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

양의 정수들의 집합 KK가 주어진다.

pp와 qq를 00이 아닌 두 십진 숫자라고 하자. 다음 조건이 성립하면 두 숫자를 KK-동치라고 부른다.

모든 n∈Kn \in K에 대하여, nn의 십진 표기에서 숫자 pp 하나를 qq로 바꾸거나 숫자 qq 하나를 pp로 바꾸어 얻은 수가 항상 다시 KK의 원소가 된다.

예를 들어 KK가 33의 배수 전체의 집합이면 숫자 11, 44, 77은 서로 KK-동치이다. 어떤 수의 십진 표기에서 11을 44로 바꾸어도 그 수가 33으로 나누어떨어지는지 여부는 바뀌지 않기 때문이다.

KK-동치는 숫자들 위의 동치 관계이다(반사적, 대칭적, 추이적).

KK는 서로소인 유한 개의 정수 구간들의 합집합으로 주어진다. 숫자 11부터 99까지의 동치류를 모두 구하여라.

입력

첫 줄에 KK를 이루는 구간의 개수 nn이 주어진다 (1≤n≤100001 \le n \le 10000).

다음 nn개의 줄에는 각각 두 양의 정수 aia_i와 bib_i가 주어지며, 이는 구간 [ai,bi][a_i, b_i](ai≤x≤bia_i \le x \le b_i인 모든 정수 xx)를 나타낸다. 여기서 1≤ai≤bi≤10181 \le a_i \le b_i \le 10^{18}이다. 또한 2≤i≤n2 \le i \le n인 모든 ii에 대하여 ai≥bi−1+2a_i \ge b_{i-1} + 2이다(구간들은 서로소이며 오름차순으로 주어진다).

출력

각 동치류를 그 원소들을 오름차순으로 이어 붙인 문자열로 나타낸다.

숫자 11부터 99까지의 모든 동치류를 사전순으로 정렬하여 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    1
    1 566
    
    예상 출력
    1234
    5
    6
    789
    
  2. 예제 2

    입력
    1
    30 75
    
    예상 출력
    12
    345
    6
    7
    89