SAC # 1 - 멩 번호

주제 배경

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 ; 
}   

 

 

추천

출처www.cnblogs.com/lsyyy/p/11391435.html