精密4つの圧縮
理論的根拠:大きな整数演算を達成するために、特定の4桁の計算方法の使用に関するすべての堆積物のアレイを作成します。
包装構造体において、
現在のところ、唯一の精度+精度、高精度単精度*、MAX(高精度、高精度)。
コード:
// 精度4圧縮=========================================== ===== CONST INT M = 85、MOD = 10000 ; ストラクトHP { INT P [ 505 ]、lenのを、 HP(){ memsetの(P、0、はsizeof (P)); lenは = 0 ; } // 初期化精密可変 空隙 put_out(){ // 出力 のprintf(" %のD " 、P [LEN]); のための(INT I = LEN 1。 ; I> 0 ; i--){ もし(P [I] == 0 ){ のprintf(" 0000 " )。 続け; } のための(int型 K = 10、K * P [I] <MOD; K * = 10)のprintf(" 0 " )。 printf(" %dの" 、P [I])。 } } } F [M] [M]、基地[M]、ANS。 // 高精+高精O(LEN) HP 演算子(+ CONST HP&、CONST HP&B){ HPのC; c.len = MAX(a.len、b.len)。 INT X = 0 。 用(INTは iは= 1 ; I <= c.len; I ++ ){ CP [I] = AP [I] + BP [I] + X。 X = CP [I] / MOD。 CP [i]は%= MOD。 } 場合(X> 0)CP [++ c.len] = X。 リターンC; } // 高精*单精O(LEN) HP 演算子(* CONST HP&、CONST INT&B){ HPのC; c.len= a.len。 INT X = 0 。 用(INT iは= 1 ; I <= c.len I ++ ){ CP [I] = AP [I] * B + X。 X = CP [I] / MOD。 CP [i]は%= MOD。 } 一方、(X> 0 ){ CP [ ++ c.len] = X%MOD。 X / = MOD。 } 戻りC。 } // 最大高精 HP MAX(CONST HP&、CONST HP&B){ もし(a.len> b.len) を返します。 もし(a.len < b.len) リターンB。 用(INT I = a.len; I> 0 ; i-- ){ 場合(AP [I]> BP [I])を 返します。 もし(AP [I] < BP [i])と リターンB。 } を返します。 } // =============================================== =