精密4つの圧縮

精密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  INTB){ 
    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。
    } 
    を返します
} 
// =============================================== =

 

おすすめ

転載: www.cnblogs.com/geraldg/p/12424114.html