주제 배경
SOL이 질문은 세계에서 가장 곤약 가장 매운 치킨 시저 비율에 의해 제공됩니다.
도시 웹 사이트에서 죽음은 완벽한 교실 정보 공식 웹 사이트입니다. 주소 : HTTP : //191.101.11.174/mgzd.
제목 설명
매운 닭고기 곤약 SOL은 빠는, 그는 실제로 수를 돋 느낌입니다!
다행히, 그의 눈에, 모든 숫자가 돋아있다. 전용 "본 팔린 드롬 문자열의 적어도 2 개의 길이"를 만족하는 숫자이다 멩 - 즉, 회문 같은 멩 (101), (101) 자체를 110 멩 그들이 팔린 드롬 문자열을 포함하기 때문에 (11); (102)가 아니라 멩, 1201도 발아.
SOL은 지금 거기에 R에 리터의 모든 정수의 얼마나 많은 멩 번호를 알고 싶어요.
대답은 큰 수 있기 때문에, 그래서 당신 만 출력 1,000,000,007 (10 ^ 9 + 7)에 대한 대답의 나머지가 필요합니다.
입력 형식
L, R : 입력은 두 정수를 포함하는 하나의 행을 포함한다.
내가 생각하는 경우이 매운 닭고기 카드 것
그래서 물을 기대하지 않았다? ? ?
기록 당신은 마지막으로, 2 개 이상의 하위 문자열의 회문 길이가 있는지를 last1 무엇
그리고 플래그는 도로가 이미 존재하는지 여부를 나타냅니다
회문이 잘못 선도 0 구획을 참고
당신은 자격이 수없는 무엇 리터 통과, 빼기
<. 비트 / stdc ++ H는> #INCLUDE #DEFINE 다시 돌아 #DEFINE이 줄게 긴 긴 #DEFINE에 대한 INC (I, L, r)을 (LL I = 1; I <= R; ++ I) 사용 스페이스 성병; LL의 N, m, LEN, NUM [ 1002 ], F [ 1,005 ] [ 2 ] [ 10 ] [ 10 ]; 게요 모드 = 1000000007 ; 서식 <TYPENAME T> 인라인 공극 RD (T & X) { LEN = 0 ; 숯 C; 부울 F = 0 ; 반면 ((c = getchar가 ()) < '0 ' || C> ' 9 ' ); NUM [ ++ LEN = C ^ 48 ; 반면 ((c = getchar가 ())> = ' 0 ' && C <= ' 9 ' ) NUM [ ++ LEN = C ^ 48 ; } 인라인 LL의 DFS ( INT의 POS, INT의 한계 INT의 플래그 INT 마지막 INT의 last1, INT의 리드) { 경우 (포스가 + 렌 == 1 ) 플래그를 재; 경우 (지도 &&! 제한 && (~ last1) && (~F [POS] 재 F [POS] 플래그 [마지막] last1])) [플래그] 마지막] last1]; 값 int = 한계를 NUM [POS] : 9 ; LL 입술 = 0 ; INC (I, 0 까지) { 경우 (플래그) = 입술 (입술 + DFS (POS + 1 , 제한 && 내가 최대 == 플래그 나, 최근, 1 )) % 개조; 다른 입술 = (고해상도 + DFS (POS + 1 , 제한 && i가 최대 ==, 납 && (내가 마지막 == | last1 == 내가) 내가, 납, 마지막 : - 1 , 리드 | I)) % 모드; } 만약 F [POS] 플래그 [마지막] last1 =의 (제한 && (~ last1)!) 입술; 입술 재; } 인라인 부울 판사 () { 경우 (NUM의 [ 2 ] == NUM [ 1 ])를 다시 1 ; INC (I, 3 , LEN) { 경우 (NUM [I] == NUM [I- 1 ])를 다시 1 ; 경우 (NUM [I] == NUM [I- 2 ])를 다시 1 ; } 다시 0 ; } INT 의 main () { freopen을 ( " in.txt " , " R " , 표준 입력); memset 함수 (F, - 1 , 를 sizeof F); RD (N); LL ans1DFS = ( 1 , 1 , 0 , - 1 - 1 , 0 ) - 판사 (); RD (m); LL ans2 = DFS ( 1 , 1 , 0 , - 1 - 1 , 0 ); 의 printf ( " %의 LLD " (ans2-ans1 + 모드) %의 개조); 다시 0 ; }