私の高精度なテンプレート

インターネット同棲、自分自身を記述することをお勧めします。

1つの チャー STR [ 1000年]。
2  INT [ 1000年 ]、[B 1000年 ]、C [ 1000年]。
3  
4  int型のmain(){
 5      のscanf(" %sの" 、STR)。
6      INT LEN = STRLEN(STR)。
7      のためのint型 I = len- 1 ; I> = 0 [lenの-1] = STR [I] - - I;)' 0 ' 8      のscanf(" %sの" 、STR)。
9      INT N =LEN;
10      LEN =のSTRLEN(STR)。
11      のためにint型 I = len- 1 ; I> = 0 ; I - )B [lenの-1] = STR [I] - ' 0 ' 12      int型 M = LEN。
13      N = MAX(N、M); 
14      
15の     ためにint型 i = 1 ; iがn = <; iは++)cは[I] = [I] + B [i]は、
16      のためにint型 i = 1 ; iが<= N; iが++)C [I + 1 ] + = C [I] / 10、[I] = C%10 17      しばらく(C [N]> 10個の || C [N + 1 ])C [N + 1 ] + = C [N] / 10、C [n]は%= 10、N ++ 18      
図19は、     のためにint型 I = N; I> 0 ; I - )のputchar(C [i]が+ ' 0 ');のputchar(' の\ n ' );
20      
21  戻り 0 ;
22 }
1つの チャー S [ 1000年]。
2  int型B;
3  INT [ 1000年 ]、C [ 1000年]。
4  int型N、M。
5  
6  INT メイン(){
 7      のscanf(" %sの" 、S);
8      INT N = STRLEN(S)。
9      のためにint型 I = N- 1、I> = 0 ; I - )[NI] = sの[I] - ' 0 ' 10      のscanf(" %d個"、&B);
11      
12      のためにint型 i = 1 ; iが<= N; iが++)C [i]は[I] * = B。
13      のためにint型 i = 1 ; iが<= N; iが++)C [I + 1 ] + = C [I] / 10、[I] = C%10 14      一方(C [N]> 10個の || C [N + 1 ])C [N + 1 ] + = C [N] / 10、C [n]は%= 10、N ++ 15      
16      のためにint型 ; I> = I = N 1のputchar(C [i]が+ -私は;)' 0 ' )。
17      
18  戻り 0 ;
19 }
1  構造体BIGNUM {
 2      INT [ 1000年]。
3      int型のlen;
4      
5      ボイドのinit(){memsetの(0はsizeof (A));}
 6      
7      ボイド のget (){
 8          のinit();
9          チャー S [ 1000年]。
10          のscanf(" %sの" 、S);
11          LEN =のSTRLEN(S)
12          のためには、int型 I = len- 1 ; I> = 0; I - )でlen-1] = sの[I] - ' 0 ' 13      }
 14      
15      ボイドプリント(){
 16          のためにint型私は、LEN =; I> 0 ; I - )のputchar([i]が+ ' 0 ' )。
17      }
 18      
19      空隙initlen(){
 20          のために(LEN = 999 ; LEN> 0 ; len--)場合([LEN])破ります21      }
 22      
23      BIGNUMの演算子 * (BIGNUM x)から{
 24         BIGNUM ANS;
25          ans.init()。
26          のためには、int型 i = 1 ; iは= LEN <; I ++ 27              のためのINT J = 1 ; J <= x.len; J ++ 28                  ans.a [I + J- 1 ] + = [I] * XA [J]。
29          のためにint型 i = 1 ; iが< 1000 ; I ++)はans.a [I + 1 ] + = ans.a [I] / 10、ans.a [I]%= 10 30          ans.initlen()。
31の         リターンANS;
32     }
 33  } X、Y、Z。
34  
35  INT メイン(){
 36      X。取得()、Y。取得();
37      (X *のY).PRINT();    
38  リターン 0 ;
39 }

 

おすすめ

転載: www.cnblogs.com/Wangsheng5/p/11627237.html