[제목] 효과
[분석] 아이디어
이 문제는 트릭 질문 [재미 .JPG를]입니다 실제로 비트 DP의 수있을 것으로 보인다
의 두 숫자가 같은 접두사가있는 경우, 단지 조금 다른, 다음 $ f를 $의 해당 값이 달라야 괜찮은 좋은 무엇을, 분석해 보겠습니다. 그 자리 $ i가 [0,9] $는 $ f를 $ 값 $ \ sum_ {I = 1}의 합에 대응에 \ 10 다른 한 자리 숫자를 들면 ^ {9} 나는 45 $를 =. $ \ sum_ 들어 I = {1} ^ {X} F (I) $, 우리는 $ [1,9], [10,19], [-20,29-] ...... [(\ lfloor의 \의 FRAC {로 나누어 N} {10} \ rfloor-1) * 10 \ lfloor \ FRAC {N} {10} \ rfloor * 10-1] $는 응답은 N $ \ lfloor의 \의 FRAC {} {10} \ rfloor * 45 $이고 . 잔여 $의 n \의 % 10 + 1 $ 우리 $ F $의 값을 계산하고, 시간 제한을 방지하기 위해, 별도 합계 개수, 우리는 {N} (\ lfloor의 \의 FRAC {10} \ rfloor f를 약 $ 변환 할 수 * 10 I +) = ({N} F (\ lfloor의 \ FRAC에 {10} \ rfloor * 10) + I) \ 10 % (전 [0, n \ % 10]에서)을 $ \
이어서 매우 간단한 응답 요청에 $ \의 sum_ I = {1} ^ {R} (F) (I) - \ sum_ J = {1} ^ {- 1} L F (j) $ 캔.
[] 코드 구현
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #INCLUDE <cstdio> 2 #INCLUDE <iostream> 3 #INCLUDE <CString을> 4 #INCLUDE <알고리즘> 5 #INCLUDE <cmath> 6 #INCLUDE <큐> 7 #DEFINE의 g () getchar가 () 8 #DEFINE의 RG 레지스터 9 #DEFINE의 이동 (I는은 b)에 대한 (RG의 INT 난 =; 나는 <= B를 단계; 내가 ++) 10 #DEFINE 백 (I, a가, b) (RG의 인터넷 용 난 =; I> = B; 난 -) 11 #DEFINE의 DB 이중 12 #DEFINE이 줄게 긴 길이 13 #DEFINE IL 인라인 14 #DEFINE PF printf의 15 #DEFINEMEM (a, b)가 memset (A, B를 sizeof (a)) (16) 를 사용 스페이스 성병; 17 LL의 FR () { 18 = w LL 0 , Q = 1 ; 19 숯 CH = g (); 20 동안 (CH2 < ' 0 ' || CH> ' 9 ' ) { 21 일 경우 (CH2 == ' - ' ) Q = - 1 ; 22 CH = g (); 23 } 24 동안 (CH2> = ' 0 ' && CH <=에서 ' 9' ) (w = w << 1 ) + (w << 3 ) + CH- ' 0 ' , CH = g (); 25 창 * w의 Q; 26 } 27 INT의 T; 28 LL의 L, R; 29 일리노이 INT는 (LL의 X) {해결 30 지능 이 [ 20 ], L = 0 , R = 2 ; 31 일 동안 (X)는 [++ L] = % X 10 X / = 10 ; 32 반면 (R <= L) { 33 백 (I, L, R)는 [I]가 = (A [I]는 [I-+ 1 %의])10 , 34은 그동안 (A [L] == 0 - && L> R & LT) L // 제로에게 최고의 제거 35 R & LT ++ ; 36 } 37 [ 리턴 A [L] 38은 } 39 IL 작업 LL (LL X) { 40 IF (X < 10 ) {LL ANS = ( . 1 + X) * X >> 1. , 반환 ANS} // 일본어 문장은 10 미만 41 인 LL ANS = (X / 10 ) * (45) , B = (X / 10 ) * (10) , (42)은 RG 용 의 INT A = % X 10,는 C = (B) 해결; 43 이동 (I, 0 , a) + = ANS 1ll * (C + I) % 10 ; 44 리턴 ANS; 45 } 46 INT 의 main () { 47 // freopen을 ( "", "R", 표준 입력); 48 // freopen을 ( "", ""w, 표준 출력); (49) T = ( INT ), FR (); 50 동안 (T-- ) { 51 리터의 FR = (); R = FR (); 52 PF ( " % LLD \ 없음 " 직장 (R) -work 1- ( 1 )); 53 } 54 반환 0; 55 }