문제의 의미 통계 간격 [A는 B] 번호 4, 62 얼마나 포함하지 않는다.
아이디어 : 디지털 DP
그냥 국가가 법적 보장 할 수 있습니다 (4)을 열거하지 않습니다, 다음 무엇을 결정하는 열거시, 디지털 4 연속 (62)이 없을 수있는 4가 없기 때문에이 제약의 필요하지 않습니다 기억, 그리고 62, 다음, 포함 할 수 없습니다 2 개에, 현재의 I은 이러한 두 가지 상황이 동일하지 카운트 때문에 다른 방식의 수를 기록하는 상태를 사용하여 6 6 아니다.
DP는 [POS는 [STA] 현재 제 나타내는 포스 는 전인지, 위치를 6 주, STA 두 상태 0과 1이 가고,도 6은 동일 종으로 간주 할 수있는 경우가 아니라, 영향이 없습니다 계산합니다.
암호
#INCLUDE <cstdio> #INCLUDE <CString을> #INCLUDE <알고리즘> 사용 스페이스 성병; int로 A [ 20 ]; INT의 DP [ 20 ] [ 2 ]; INT DFS ( INT POS, INT의 전, INT의 STA, INT의 제한) { 경우 (POS == 0 ) 창 1 ; 만약 - (제한 && DP [POS] [STA =! 1 ) 복귀 DP [POS] [STA]; int로 ? = 한계를 A [POS] : 9 ; INT의 TMP = 0 ; 위한 ( int로 I = 0 ; I는 <= 최대; 내가 ++ ) { 경우 (프리 == 6 && I == 2 ) 계속 ; 경우 (I == 4 ) 계속 ; TMP가 + = DFS (pos- 1 난 내가 == 6 , 제한 && 난 == A [POS를]); } 만약 DP [POS] [STA] = (최대!) TMP; 반환 의 tmp를; } int로 해결 ( INT X) { INT의 POS = 1; 반면 (X) { A [POS ++] = X % 10 ; X / = 10 ; } 리턴 DFS (pos- 1 - 1 , 0 , 1 ); } INT 의 main () { INT의 L, R; memset 함수 (DP, - 1 , 를 sizeof (DP)); 동안 (~는 scanf ( " % d 개 %의 D ' , L, R) && L + R) 의 printf ( " % D \ 없음 " 해결 (R) -solve (1- (1))); 반환 0 ; }