以上の2019頭の牛オフサマースクールキャンプ(5位)Bジェネレータ1

ポータル

質問の意味:

最初の入力X0、X1、A、BおよびXIに従う= *のX(I-1)+ B * X(I-2)(I> = 2)

あなたは剰余MODにX(n)の値に基づいて式を見つけるようにした後、モッズ、nは再入力

 

ソリューション:

私たちはすぐにすぐに電源の係数行列を見つけることができると考えています

| X0 X1 | * | 0 | = | X1 X2 |

     | 1件のB |

なお、上記式に従って高速電力行列を作成することです

 

しかし、我々はまだ問題があるパワーの係数行列を見つけるためにあまりにも長い間、長い長いの範囲を超えてきたビットのnトピックの入力の数に注意を払う必要があります

我々は、観察されたもの1,2 * 10,1×100である2 ^ 121のパワー、

2 ^ 121 =(2 ^ 1)*(10 ^ 2)*(2 ^ 2)*(10 ^ 2)*(^ 1 2)

この特徴によれば、我々は解凍するために数回の大きな力を入れることができます^ _ ^

 

コード:

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3 typedefの長い 長いLL。
4  のconst  int型のサイズ= 1E6 + 5 5  チャーN [サイズ]。
6  int型X0、X1、B;
7 typedefの長い 長いLL。
8  LLモッズ。
9  構造体マット
 10  {
 11      のint M [ 3 ] [ 3 ]。
12      マット(){ INT I = 0;私は< 3 I ++); のためINT J = 0 ; J < 3 ; J ++)M [I] [J] = 0 ;}
 13      友人マット演算子 * (マットX、マットY)
 14      {
 15の         マットANSを、
16          のためには、int型 i = 1 ; iが<= 2 ; I ++ 17          {
 18              のためのint型 J = 1 ; J <= 2、J ++ 19              {
 20                  のためにINTK = 1 ; K <= 2 ; ++ kは21                  {
 22                      ans.mを[I] [K] =(ans.m [I] [K] + 1LL * XM [I] [J] * YM [J] [ K])%の変化。
23                  }
 24              }
 25          }
 26          リターン年。
27      }
 28  }。
29インラインquick_powマット(マットは、あるint型B)
 30  {
 31      マット年。
32      ans.m [ 1 ] [ 1 ] = 1 ; ans.m [ 2 ] [ 2 ] =1 ;
33      一方、(B)
 34      {
 35          であれば(B&1)ANS = ANS * 36          = *のA。
37          B >> = 1 38      }
 39の     リターンANS。
40  }
 41  のint main()の
 42  {
 43      のscanf(" %D%D%D%D "、及びX0、X1および、&​​、&B)。
44      のscanf(" %sの%のLLD "、N、&MOD)。
45      マットORI。
46     INT LEN = STRLEN(N)。
47      ori.m [ 1 ] [ 2 ] = 1を ori.m、[ 2 ] [ 1 ] Bが=; ori.mは、[ 2 ] [ 2 ] = 48の     マットANS;
49      ans.m [ 1 ] [ 1 ] = 1 ; ans.m [ 2 ] [ 2 ] = 1 ;
50      のためにint型 I = len- 1 ; I> = 0 ; i-- 51      {
 52          -のANS =のANS * quick_pow(ORI、N [i]が'0 " );
53          ORI = quick_pow(ORI、10 )。
54      }
 55      のprintf(" %LLDする\ n "、(1LL * X0 * ans.m [ 1 ] [ 1 ] + 1LL * X1 * ans.m [ 1 ] [ 2 ])%のMOD)を、
56 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/kongbursi-2292702937/p/11284234.html