love fish大鵬一曰同風(fēng)起,扶搖直上九萬(wàn)里

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          friends

          link

          最新評(píng)論

          設(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)這種超大型數(shù)字并且實(shí)現(xiàn)加減

          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()); 

            

              }
           

            

          }





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

          posted on 2007-03-20 14:24 liaojiyong 閱讀(2223) 評(píng)論(5)  編輯  收藏 所屬分類(lèi): Java

          評(píng)論

          # re: 設(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)這種超大型數(shù)字并且實(shí)現(xiàn)加減 2007-03-20 14:52 BeanSoft

          java.math.BigInteger 和 java.math.BigDecimal 實(shí)現(xiàn)了任意精度的整數(shù)和浮點(diǎn)數(shù)的計(jì)算.... 哥們還是不錯(cuò)的, 有創(chuàng)意!

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

          # re: 設(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)這種超大型數(shù)字并且實(shí)現(xiàn)加減 2007-03-20 15:33 lang

          當(dāng)年的面試題 ,不過(guò)自己沒(méi)寫(xiě)出程序來(lái),只是大致的描述了思路   回復(fù)  更多評(píng)論   

          # re: 設(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)這種超大型數(shù)字并且實(shí)現(xiàn)加減 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
          但要求設(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu),而不是現(xiàn)成的數(shù)據(jù)結(jié)構(gòu)
            回復(fù)  更多評(píng)論   

          # re: 設(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)這種超大型數(shù)字并且實(shí)現(xiàn)加減 2007-03-20 17:57 BeanSoft

          那就只能用當(dāng)年學(xué)數(shù)據(jù)結(jié)構(gòu)描述計(jì)算機(jī)加減法的原理來(lái)做了....  回復(fù)  更多評(píng)論   

          # re: 設(shè)計(jì)一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)這種超大型數(shù)字并且實(shí)現(xiàn)加減 2007-03-20 18:01 dennis

          存儲(chǔ)成字符串,通過(guò)棧來(lái)實(shí)現(xiàn)加減,這是當(dāng)年做過(guò)的一道數(shù)據(jù)結(jié)構(gòu)題  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 玛纳斯县| 同仁县| 隆子县| 灵宝市| 高密市| 靖宇县| 汶川县| 庄浪县| 黄冈市| 万宁市| 永宁县| 子长县| 板桥市| 航空| 比如县| 泸西县| 永登县| 会理县| 平乐县| 东明县| 长沙市| 五常市| 礼泉县| 宜城市| 德化县| 莎车县| 阳朔县| 融水| 安仁县| 和硕县| 抚州市| 梁河县| 开封市| 隆子县| 台安县| 蒙城县| 安陆市| 咸丰县| 观塘区| 安图县| 铜鼓县|