E - 先頭と末尾
この1つは取る必要がある場合、ない取るしないように高速電力は主に、2 n個のバイナリビットに分割し、xは常にX-> X ^ 2 - > X ^から、前進されるカウンタである 4 までn個の最上位ビット
の本質は、成形と関連するデータをステップの前に後に必要な工程の後、モジュロ結果です。
3の数がlog10.log nの関数として評価されるため^この問題は依然として非常に有用であるKです。考え抜か。
1の#include <iostreamの> 2の#include <CStringの> 3の#include < ストリング > 4の#include <地図> 5の#include < 設定 > 6の#include <アルゴリズム> 7の#include <fstreamの> 8の#include <cstdioを> 9# <cmath>含む 10の#include <積層> 11の#include <キュー> 12 使用 名前空間STDを、 13 CONST ダブルパイ= 3.14159265358979323846 。 14 typedefの長い 長いLL。 15 のconst int型 MAXN = 5000 + 5 。 16 のconst int型 DX [ 5 ] = { 0、0、0、1、 - 1 }。 17 のconst int型 DY [ 5 ] = { 1、 - 1、0、0、0 }。 18 CONST INT INF = 0x3f3f3f3f 。 19 CONST INT NINF = 0xc0c0c0c0 。 20 LL mod_pow(LL N、LL X、MOD LL) 21 { 22 LL ANS = 1 。 23 一方、(N> 0 ){ 24 であれば(N - 1)ANS = ANS * X%MOD。 25 X = X * X%MOD。 26 N >> = 1 。 27 } 28の リターンANS。 29 } 30 31 のint main()の 32 { 33 int型の CNT = 0 。 34 int型の T; cinを>> トン。 35 しばらく(t-- ) 36 { 37 のLL N、K; CIN >> N >> K。 38 LL最後= mod_pow(K、N、1000年)。 39 ダブル P = k個*のlog10の(N) 40 LL X =(LL)P。二重 Y = P- X。 41 、Y = POW(10、Y)* 100 。 42 っ最初= INT (Y) 43 のprintf(" ケース%D:%03lld%03lld \ n "、++ 最初、最後CNT)。 44 } 45 リターン 0 。 46 }