love fish大鵬一曰同風起,扶搖直上九萬里

          常用鏈接

          統計

          積分與排名

          friends

          link

          最新評論

          設計一個數據結構來存儲這種超大型數字并且實現加減

          package liaojiyong.net.blogjava; 

            

          public class BigInt 

              
          static int [] ArrOne = new int [1000]; 

            

              
          static int [] ArrOne2 = new int [1000]; 

            

              
          static int [] ArrOne3 = new int [1000]; 

            

              
          static int [] ArrOne4 = new int [1000]; 

            

              
          static StringBuffer intString ; 

            

              
          static int token = 0

            

              
          public static StringBuffer Arr( int [] ArrOne2) 

                 intString 
          = new StringBuffer(); 

                 
          int token1 = 0

                 
          for ( int i = ArrOne2. length - 1; i >= 0; i--

                     
          if (ArrOne2[i] != 0

                        token1 
          = 1

                     }
           

                     
          if (token1 == 1

                        
          int ss = 9 - String.valueOf( ArrOne2 [i]).length(); 

                        
          if (ss > 0

                            
          for ( int mm = 0; mm < ss; mm++

                               intString .append( 
          "0" ); 

                            }
           

                        }
           

                        intString .append(ArrOne2[i] 
          + " " ); 

                     }
           

                 }
           

                 
          if ( intString .equals( "" ) || null == intString ) 

                     intString .append( 
          "0" ); 

                 }
           

                 
          return intString ; 

              }
           

            

              
          public static StringBuffer ArrAdd( int [] ArrOne3, int [] ArrOne4) 

                 intString 
          = new StringBuffer(); 

                 
          int [] arrAddResult = new int [1000]; 

                 
          for ( int i = 0; i < ArrOne3. length ; i++

                     
          if (ArrOne3[i] >= 1000000000 || ArrOne4[i] >= 1000000000

                        System. out .println( 
          "Data Out Out Of Range!" ); 

                        
          return null ; 

                     }
           

                     
          if ((ArrOne3[i] > 0&& (ArrOne4[i] > 0

                            
          && (ArrOne3[i] + ArrOne4[i] + token >= 1000000000)) 

                        arrAddResult[i] 
          = ArrOne3[i] - 1000000000 + ArrOne4[i] + token ; 

                        token 
          = 1

                     }
           else 

                        arrAddResult[i] 
          = ArrOne3[i] + ArrOne4[i] + token ; 

                        token 
          = 0

                     }
           

                 }
           

                 
          return Arr(arrAddResult); 

              }
           

            

              
          public static void main(String[] args) 

                 ArrOne3 [
          0= 11

                 ArrOne3 [
          1= 11111111

                 ArrOne3 [
          2= 111111111

                 ArrOne4 [
          0= 1111

                 ArrOne4 [
          1= 11

                 ArrOne4 [
          2= 111111111

                 System. out .println( 
          "Arr = " + Arr( ArrOne3 ).toString()); 

                 System. out .println( 
          "ArrAdd(ArrOne3, ArrOne4) = " 

                        
          + ArrAdd( ArrOne3 , ArrOne4 ).toString()); 

            

              }
           

            

          }





          減法和加法差不多,所以就不寫了
          Arr = 111111111 011111111 000000011
          ArrAdd(ArrOne3, ArrOne4) = 222222222 011111122 000001122
           

          posted on 2007-03-20 14:24 liaojiyong 閱讀(2227) 評論(5)  編輯  收藏 所屬分類: Java

          評論

          # re: 設計一個數據結構來存儲這種超大型數字并且實現加減 2007-03-20 14:52 BeanSoft

          java.math.BigInteger 和 java.math.BigDecimal 實現了任意精度的整數和浮點數的計算.... 哥們還是不錯的, 有創意!

          提供用于執行任意精度整數算法 (BigInteger) 和任意精度小數算法 (BigDecimal) 的類
          http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/math/package-summary.html  回復  更多評論   

          # re: 設計一個數據結構來存儲這種超大型數字并且實現加減 2007-03-20 15:33 lang

          當年的面試題 ,不過自己沒寫出程序來,只是大致的描述了思路   回復  更多評論   

          # re: 設計一個數據結構來存儲這種超大型數字并且實現加減 2007-03-20 17:23 liaojiyong

          package liaojiyong.net.blogjava;

          import java.math.BigInteger;

          public class BigIntegerTest {
          public static void main(String[] args) {
          BigInteger x = new BigInteger(
          "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111");
          BigInteger m = new BigInteger(
          "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111");
          BigInteger result = new BigInteger("0");
          result = result.add(x).add(m);
          System.out.println("result=" + result);
          }
          }


          result=2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222


          多謝 @BeanSoft
          但要求設計一個數據結構,而不是現成的數據結構
            回復  更多評論   

          # re: 設計一個數據結構來存儲這種超大型數字并且實現加減 2007-03-20 17:57 BeanSoft

          那就只能用當年學數據結構描述計算機加減法的原理來做了....  回復  更多評論   

          # re: 設計一個數據結構來存儲這種超大型數字并且實現加減 2007-03-20 18:01 dennis

          存儲成字符串,通過棧來實現加減,這是當年做過的一道數據結構題  回復  更多評論   

          主站蜘蛛池模板: 南昌县| 凤庆县| 松阳县| 南充市| 旬邑县| 德格县| 灌南县| 千阳县| 达拉特旗| 华宁县| 南安市| 瓮安县| 富源县| 普兰县| 安塞县| 本溪| 卢龙县| 临汾市| 卓尼县| 安西县| 望谟县| 遂川县| 庆安县| 曲阳县| 泰兴市| 西乌珠穆沁旗| 金寨县| 黔西| 江北区| 呼伦贝尔市| 开原市| 揭东县| 古田县| 衡阳市| 水城县| 荃湾区| 辛集市| 扎兰屯市| 利辛县| 修水县| 开封县|