게임

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

수학을 잘하는 랑이는 오늘 집사에게 수를 이용한 게임을 배웠다. 이 게임은 양의 정수 NN을 초깃값으로 가진 상태로 시작한다. NN의 각 자릿수를 모두 더한 값을 AA, NN의 각 자릿수를 모두 곱한 값을 BB라고 할 때, AABB를 순서대로 이어 붙인 수를 f(N)f(N)으로 표현한다. 예를 들어 N=12352N = 12352라면 각 자릿수의 합은 1+2+3+5+2=131 + 2 + 3 + 5 + 2 = 13, 각 자릿수의 곱은 1×2×3×5×2=601 \times 2 \times 3 \times 5 \times 2 = 60이니 f(N)f(N)은 이 둘을 순서대로 이어 붙인 13601360이 된다. 13601360에 다시 위 연산을 적용한다면 1+3+6+0=101 + 3 + 6 + 0 = 10, 1×3×6×0=01 \times 3 \times 6 \times 0 = 0이므로 f(1360)=100f(1360) = 100이 된다. 이 100100에 다시 연산을 적용하면 f(100)=10f(100) = 10이고, 이 결과에 다시 적용한다면 f(10)=10f(10) = 10이 된다. 이 게임에서는 NN이 주어질 때 f(N)f(N), f(f(N))f(f(N)), f(f(f(N)))f(f(f(N))), \cdots 형태로 계속 나아갈 때 언젠가 f(x)=xf(x) = x 형태가 되는 xx가 나올 수 있는지 알아내는 것이 중요하다.

NN에 연산을 계속 적용해서 x=f(x)x = f(x)가 되는 xx가 나오게 된다면 g(N)=1g(N) = 1, 나오지 않는다면 g(N)=0g(N) = 0으로 표현하자. 단, N,f(N),f(f(N)),N, f(N), f(f(N)), \cdots100,000100\\,000보다 큰 수가 하나라도 존재한다면 계산하기 어려우므로 g(N)=1g(N) = -1이라고 표현한다. 예를 들어, N=1N = 1이라면 f(1)=11f(1) = 11, f(11)=21f(11) = 21, f(21)=32f(21) = 32, f(32)=56f(32) = 56, f(56)=1130f(56) = 1130, f(1130)=50f(1130) = 50, f(50)=50f(50) = 50 으로 5050에서 f(x)=xf(x) = x 형태가 나오기 때문에 g(1)=1g(1) = 1이 된다.

양의 정수 L,R(LR)L, R (L \le R)이 주어질 때, g(L)+g(L+1)+g(L+2)++g(R1)+g(R)g(L) + g(L + 1) + g(L + 2) + \cdots + g(R - 1) + g(R)의 값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 양의 정수 LL, RR이 공백으로 구분되어 주어진다. (1LR100,000)(1 \le L \le R \le 100\\,000)

출력

g(L)+g(L+1)+g(L+2)++g(R1)+g(R)g(L) + g(L + 1) + g(L + 2) + \cdots + g(R - 1) + g(R)을 출력한다.