桁の数字DP JZOJ 3316非パリンドローム

タイトル

説明

文字列が後ろから同じをバックアップして読むことを正面から読めば、我々は回文文字列を呼び出します。数1は非パリンドロームと呼ばれるデジタル数字を含むサブパリンドロームの長さよりも大きくない場合。例えば、非回文数16276、17276、それは回文数727を含んでいるため、ではありません。

あなたの仕事は、与えられた範囲内の非回文数の合計数を計算することです。
 

入力

唯一の入力ライン、二つの整数a、bを備えます。

出力

出力のみの一行は、非回文数の総数(およびBを含む)Bの範囲を示す整数を含んでいます。
 

サンプル入力

入力1:
123 321
入力2:
123456789 987654321

サンプル出力

出力1:
153
出力2:
167386971
 

データ制約

25%のデータ:BA <100 = 000

データの100%:0 <= A <= B <= 10 ^ 18

 

分析

 

  • 第一のチャネル桁DP
  • テンプレートは、直接設定します

 

コード

 

 

1つの#include <iostreamの>
 2の#include <CStringの>
 3。 の#define LLロングロング
 4。 使用した 名前空間STD;
 5 LL A [ 100 ]、POS;
 6 LL F [ 20 ] [ 10 ] [ 10 ] [ 2 ] [ 2 ] [ 2 ]; 
 7 LL DFS(POS LL、LL PRE2、LL PRE1、BOOL ZERO2、BOOL ZERO1、BOOL LIM)// ゼロ先行ゼロフラグがある場合
。8  {
 9      のiF(F [POS] [PRE2] [PRE1] [ZERO1] [ZERO2] [林] = - 。110        リターン F [POS] [PRE2] [PRE1] [ZERO1] [ZERO2] [リム];   // メモリ検索
11。      LL ANS = 0 ;
 12は、     IF(POS < 1リターン 1 ;
 13である      LL =エンドイム? [POS]:9 ;
 14      (LL I = 0 ;私は=エンド<; I ++は15      {
 16          IF(!= || I)&&(PRE1 ZERO1 = || I)(ZERO2 PRE2)    // ため文字列は0に存在することができない
17の。            ANS + = DFS(POS- 1、PRE1、I、ZERO1、ZERO1 &&(I == 0)、I LIM && ==の終わり);
 18れます     }
 19      であれば([ZERO2] [LIM] == [POS] [PRE2] [PRE1] [ZERO1] F - 1)[POS] [PRE2] [PRE1] [ZERO1] [ZERO2] [LIM] = FをANS。
20の     リターンANS;
21  }
 22  LL計算値(LL X)
 23  {
 24台の      POS = 0 25      のmemset(F、 - 1はsizeof (F))。
26      一方、(X)[++ POS] = X%10、X / = 10 27の     リターン DFS(POS、00111 )。
28 }
 29  のint main()の
 30  {
 31      LLのL、R。
32      CIN >> L >> R。
33      COUT << CALC(R)-calc(1- 1 )。
34 }

 

Dpのデジタルテンプレート

1 LL DFS(INTカット、BOOL限界、BOOL STA)
 2  {
 3      であれば(カット== 0リターン 1 4      LL ANS = 0 5      INTのCu =リミット[カット]:9 6      int型 I = 0を私は++; I <=銅7      {
 8          た場合(I == 2 && STA)続けます9          もし(私!= 4 10         ANS + =(DFS(カット- 1、リミット・(I == A [カット])、I == 6 ))。
11      }
 12の     リターンANS。
13  }
 14   
15  11(LLのX)解決
 16  {
 17      のintカット= 0 18      一方、(X){
 19          [切断++] =(X%10 )。
20          X / = 10 21      }
 22の     リターン DFS(カット、10 );
23  }
 24   
25  INT (主に)
26  {
 27      、B LL。
28      一方、1 29      {
 30          CIN >> A >> B。
31          であれば(== 0 && Bの== 0戻り 0 ;
32          COUT <<解く(B)-solve(A- 1)<< ENDL。
33      }
 34       
35      戻り 0 ;
36 }

 

おすすめ

転載: www.cnblogs.com/zjzjzj/p/11135057.html