만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Oneness

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

요약
길이 l인 의사 난수 n이 주어질 때, 1부터 n까지 각 정수가 가진 1로만 이루어진 1보다 큰 약수의 개수를 모두 더합니다.
난이도

어려움10점 중 8점

유형
정수론, 수학, 구현
정답자
아직 제출이 없습니다

문제

정수 xx의 oneness는 xx를 나누는 정수 d>1d > 1 가운데 십진수 표현이 숫자 1로만 이루어진 것의 개수로 정의한다. 예를 들어 oneness(121)=1oneness(121) = 1이고 oneness(1221)=2oneness(1221) = 2이다.

정수 nn은 의사 난수 생성기로 만든다. 정수 ll과 s0s_0이 주어지는데, ll은 nn의 십진수 표현의 자릿수이고 s0s_0은 생성기의 시드이다. nn의 자릿수 d0d1…dl−1d_0 d_1 \ldots d_{l-1}은 다음 점화식으로 생성된다.

di=⌊si/1024⌋mod  10d_i = \left\lfloor s_i / 1024 \right\rfloor \mod 10

si+1=(747796405si−1403630843)mod  232s_{i+1} = (747796405 s_i - 1403630843) \mod 2^{32}

d0d_0은 0이 아님이 보장된다. 1부터 nn까지 모든 정수의 oneness 합을 구하시오.

입력

첫 줄에 두 정수 ll과 s0s_0이 주어진다 (1≤l≤250 0001 \le l \le 250\,000, 0≤s0<2320 \le s_0 < 2^{32}).

출력

1부터 nn까지 모든 정수의 oneness 합을 출력한다.

힌트

예제에서 nn은 각각 1, 11, 1221, 9359이다.

예제4

  1. 예제 1

    입력
    1 1024
    
    예상 출력
    0
    
  2. 예제 2

    입력
    2 1048
    
    예상 출력
    1
    
  3. 예제 3

    입력
    4 11312
    
    예상 출력
    123
    
  4. 예제 4

    입력
    4 31415926
    
    예상 출력
    942