겨울 Day30 : HDU4507- Jige 시리즈 7은 증오 아내의 이야기 아니다 - 디지털 DP

질문 표면 :

싱글! 
  또 하나! 
  Jige 여전히 하나! 
  DS 수준의 코드 농부 Jige 여전히 하나! 
  그래서, 발렌타인 데이가 214 또는 77인지, 자신의 삶을 미워, 그는 미워! 
  
  Jige 두 숫자 (214)을 관찰하고 (77), 발견 : 
  2 + 1 + 4 = 7 
  7 + 7 = 7 * 2 
  77 = 7 * 11 
  결국 그 최종 분석 및 7과 관련이 때문에 모든 것을 알았다! 그래서 그는 모든 것을 7에 대해 지금도 수는 싫어! 

  그리고 어떤 종류의 그것에 숫자 7의? 

  - 다음과 같은 세 가지 조건의 정수 충족 하나, 우리는이 정수와 7에 대해 말한다면 
  1 , 그것은 7 정수 조금있다
  2 , 각 비트 정수 7의 정수 배수까지 추가는,
  3 이 정수 7의 정수 배수, 

  이제 질문은 : Jige 특정 범위와 광장 숫자 7과 관련이없는 내 알고 싶어요. 
입력 
입력 데이터의 첫 번째 라인은 케이스 번호 T (것이다 . 1 <= T <= 50예), 다음 행 T T는 경우를 나타내고, 각각의 경우 두 개의 양의 정수의 L, R (하나 개의 줄을 포함 . 1 <= L <= R & LT <= 10 ^ 18 ). 
출력 
계산 [L, R] 독립된 숫자 7 승, 10의 결과 ^ 9 + 7 모듈 동작 출력. 
입력 샘플 
. 3 
. 1  . 9 
(10)  . (11) 
. (17)  . 17 
샘플 출력 
236 
221 
0
코드보기

 

질문의 의미 :

  다음의 세 가지 상태의 정수 충족 한 7 정도 인 경우
  (1), 7의 정수이고;
  (2), 결합 정수는 각각 7의 정수배이며;
  (3), 정수 7의 정수이고 시간;

  주어진 간격과 7 독립적 번호 내에서 사각형을 찾는.

 

https://blog.csdn.net/Estia_/article/details/83479031

이 블로그는 분명 좋은 아이디어를 Daoting,하지만하여 작성 내가 이해하지 못했다 구조의 내부의 코드 내부의 구조 ,,

 

코드 :

#INCLUDE < 문자열 .H> 
#INCLUDE <iostream> 
#INCLUDE <STDIO.H> 
#INCLUDE <알고리즘> 
#INCLUDE <cmath>
 은 USING  공간 STD, 
타입 정의  LL;
 CONST LL + 1E9 = MOD . 7 ; 

구조체 노드 
{ 
    LL CNT ; // A A A 7 
    LL SUM; // 모든 함께 및 7의 정수배 
    LL의 sqsum; // SE 일곱의 정수배 
} DP [ 20된다 [] 10 ] [ 10 ] 

INT 위한 자리 [ 25 ];
LL P [ 25 ] 

공극 초기화 () 
{ 
    P [ 0 ] = 1이다. ]
      ( INT I = 1. ; I < 20이며 ; I ++ ) 
        P [I]는 = (P [I- 1. * 10 ) % MOD;
     / / 방법 속성 할당에 구조하는? ?
//     (; I <20 인 I ++ INT I = 0)에 대한
 //     {
 //         대 (INT J = 0; J <10; J ++)
 //         {
 //             대 (INT = 0 K; K <10; ++ K )
 //             {
 //                 DP [I] [J] [K] .CNT = -1;
//             }
 //         }
 //     } 
} 

노드 DFS ( INTINT P1, INT P2, 부울 제한) 
{ 
    경우 (LEN == - 1 ) 
    { 
        노드 PP; 
        pp.cnt = (! P1 = 0 && (P2)! = 0 ); 
        pp.sum = pp.sqsum = 0 ;
        반환 쪽을;
        // 반환 1; 
    }
     만약 (최대 == 0 && DP [LEN] [P1] [P2] .CNT)
         //- IF (! 제한 == 0 && DP [LEN] [P1] [P2] .CNT = 1) // 와 현재의 비트 수는 통계가 
        리턴 ; DP [LEN] [P1] [P2] 
    ; LL 업 
    IF = (한도 = 1 ) 
        최대 = 자리 [LEN]
     다른 
        최대 = 9 ; 
    노드 PP, QQ가; // 왜 집단적으로 정의되지? ? ? ? WA? ? 
    qq.sum = = = qq.sqsum qq.cnt 0 ]
      ( INT I = 0 ; I는 <최대 = I ++ ) 
    { 
        IF (I == . 7 )
             계속해서 , 
        PP = DFS (렌 . (1) , (I + P1 ) %7 (N2 * 10 + I) % 7 , 제한 && 난 == 까지); 
        qq.com + = PC; 
        qq.com % = 개조; 

        qq.sum + = (pp.sum + ((p [LEN * I) 개조 %) * %의 PC 모드) %의 모드; 
        qq.sum % = 개조; 

        qq.sqsum + = (pp.sqsum + (( 2 * P [LEN * I) 개조 %) * pp.sum) %의 모드; 
        qq.sqsum % = 개조; 
        qq.sqsum + (PC * P [LEN]) %의 개조를 P [LEN * I는 I * %% 개조를 개조하는 단계; 
        qq.sqsum % = 개조; 
    } 
    만약 (최대 == 0 ) //완성 된 상태에서는 DFS 직접 반환 할 때, 다음 번까지이다 
        DP [렌] [P1] [P2] = ; QQ
     복귀 QQ를; 
} 

해결 LL (LL X) 
{ 
    INT NUM = 0 ; // 자릿수 
    그동안 (X) 
    { 
        위한 자리 [NUM은 ++] X가 % = 10 ;
 // 문제가없는 이유를 알 수없는 권리 ++ 납입 
        X / = 10 ; 
    } 
    반환 DFS (NUM- 1. , 0 , 0 , 1을. ). sqsum; //이 위에서 아래에서 높은 횡단 
} 

INT ) (주 
{ 
//    memset 함수 (DP, 0, sizeof의 (DP는)); // 필요한 비트 수는 -1 DP 겉보기에 한 번 비워 취소 빈 두를 비우는 것은 쓰기 문 0 필요 없다 
    , 초기화 ()
     INT T; 
    CIN >> T,
     그동안 (T- - ) 
    { 
        LL L, R & LT; 
        CIN >> L >> R & LT는; // 로 정의 INT WA 
        LL ANS = 해결 (R LT) -solve (L- . 1 ) 
        ANS = (ANS % + MOD MOD) MOD %; //는 제외 방지 
        << COUT ANS << ; ENDL를
         // (N-) << ENDL을 1-N-해결 COUT << +].
         // 상부 및 하부 경계를 법원 << 해결 (m) -solve ( N-1) << ENDL; 
    }
     반환  0 ; 
}

 

 

해결하려면 :

일부 문제는 기록의 맥락에서 해결해야 할, 나는의 질문을보고 싶지 않아

 

 

생각:

이 질문에 나는 몇 시간을 변경? ? ?

다음 쓰기, 영어를 볼 수있는 오후를 마무리 할 수도 있었다 ,,,, 난 아직 완료하지 않은,

정말 너무 많은 음식 정말 ,, 증오 철 아, 그냥입니다 ,,, 질문의 일을,

왜 노드 내부 재정의 할 필요가, 아에 영향을주지 않습니다? ? ?

내부 CNT 청나라 청나라 -1 불분명하거나 영향을주지 않습니다

나는 폭발 배치 할

영어 보지, 붐 ~

추천

출처www.cnblogs.com/OFSHK/p/12319647.html