隨筆-42  評論-349  文章-4  trackbacks-0
          上次屁顛屁顛的跑了1k多公里去ucweb面試,本來自我感覺還不錯的,可是還是很郁悶得就給打回來了……
          ???? 其中有個筆試題是求兩個大數(比如100位)的和,我當時知道怎么做,思路也沒問題,但是在紙上劃的時候估計有些細節沒處理好,比如判斷輸入等。回來后自己重新做了一遍,把它貼出來共享,奉獻給即將面試的兄弟伙,有什么問題請拍磚。

          ??? 網絡上還有另外一個版本:

          ?? 這又是一個版本:


          By:殘夢追月
          posted on 2009-03-10 12:58 殘夢追月 閱讀(5588) 評論(20)  編輯  收藏

          評論:
          # re: java大數加法 2009-03-10 14:20 | zy.weiliang@gmail.com
          ???為什么你要自己實現,jdk本身即有大數的api,直接調用不就行了.
          除非他非要你自己實現這個算法.
          一般公司沒有這么變態吧,純粹為了考試而考試,又不是sun這樣的開發語言的公司.  回復  更多評論
            
          # re: java大數加法 2009-03-10 16:03 | 隔葉黃鶯
          String s1 = "1234567890";
          String s2 = "";
          for (int i = 0; i < 100; i++) {
          s2 += s1;
          }
          BigDecimal bd1 = new BigDecimal(s2+".123456789");
          BigDecimal bd2 = new BigDecimal(s2+".123456789");
          System.out.println(bd1.add(bd2));

          輸出是:
          2469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780246913578024691357802469135780.246913578

          自己算一下,或數一下是多少位了。  回復  更多評論
            
          # re: java大數加法 2009-03-10 16:35 | 張林君
          @zy.weiliang@gmail.com
          對啊,我也是這樣想的?
          或許作者不知道嗎?好像不太可能啊  回復  更多評論
            
          # re: java大數加法 2009-03-10 16:43 | 張林君
          @隔葉黃鶯
          這個什么意思啊 有問題嗎?
          這個結果整數部分是1000位啊....  回復  更多評論
            
          # re: java大數加法 2009-03-10 16:52 | 隔葉黃鶯
          小數部分還可以繼續  回復  更多評論
            
          # re: java大數加法[未登錄] 2009-03-10 17:25 | aaa
          import java.io.*;
          import java.util.*;
          import java.math.BigInteger;

          class Test{
          static final Scanner cin=new Scanner(System.in);

          public static void main(String[] args){
          while(cin.hasNext()){
          String str1=cin.next(),str2=cin.next();
          BigInteger a=new BigInteger(str1),b=new BigInteger(str2);
          System.out.println(a.add(b));
          }
          }
          }  回復  更多評論
            
          # re: java大數加法 2009-03-10 19:47 | 王兵
          后面的評論有點跑題了

          不過確實在開發過程中沒有人會自己寫一個大數相加類  回復  更多評論
            
          # re: java大數加法 2009-03-10 20:57 | 殘夢追月
          @隔葉黃鶯
          隔兄,你這個是什么意思啊?我沒搞明白耶……貌似這樣不行……  回復  更多評論
            
          # re: java大數加法 2009-03-10 21:01 | 殘夢追月
          @aaa
          where is method "add()"?  回復  更多評論
            
          # re: java大數加法 2009-03-10 22:12 | YXY
          You can find "public BigInteger add(BigInteger val)" by http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html  回復  更多評論
            
          # re: java大數加法 2009-03-10 22:45 | 隔葉黃鶯
          @殘夢追月
          BigDecimal和BigInteger就有 add() 方法的。你試一試吧。  回復  更多評論
            
          # re: java大數加法[未登錄] 2009-03-11 10:13 | aaa
          @殘夢追月,
          where is method "add()"? 這是偷懶的辦法直接調用API!

          import java.math.BigInteger;

          public class BigInt {
          public static void main(String[] args) {
          String a="999";
          String b="999";
          BigInteger str1=new BigInteger(a);
          BigInteger Str2=new BigInteger(b);
          BigInteger sum=str1.add(Str2);
          System.out.println(sum);
          }
          }  回復  更多評論
            
          # re: java大數加法 2009-03-11 13:06 | 殘夢追月
          @隔葉黃鶯
          寒!我只是知道有BigDecimal,卻還不知道BigInteger ,長見識了。
          我本來想用BigDecimal的,但是題目要求是自己實現……

          我是說我沒看明白為什么……


          String s1 = "1234567890";
          String s2 = "";
          for (int i = 0; i < 100; i++) {
          s2 += s1;
          }
          BigDecimal bd1 = new BigDecimal(s2+".123456789");
          BigDecimal bd2 = new BigDecimal(s2+".123456789");
          System.out.println(bd1.add(bd2));

          空串+小數點 為什么會出現這種情況?  回復  更多評論
            
          # re: java大數加法 2009-03-11 13:07 | 殘夢追月
          @aaa
          o(∩_∩)o...,謝謝勒。長見識了,還有個BigInteger,還以為是你自己實現得……  回復  更多評論
            
          # re: java大數加法 2009-03-11 13:51 | 隔葉黃鶯
          @殘夢追月
          不是空串+小數點,用s2+".123456789" 是為了說明 BigDecimal 也能支持小數。  回復  更多評論
            
          # re: java大數加法 2009-03-11 17:19 | 殘夢追月
          @隔葉黃鶯
          額……呵呵
            回復  更多評論
            
          # re: java大數加法 2009-07-21 10:40 | Frank_Fang
          請問你這個代碼著色是怎么做的?  回復  更多評論
            
          # re: java大數加法 2009-08-17 10:16 | 殘夢追月
          @Frank_Fang
          看我頁面的源碼啊  回復  更多評論
            
          # re: java大數加法 2011-07-09 17:16 | eraser0
          一般這種題目就是考細心而已啦。。。話說用BigInteger的話還算面試題目嗎。。。UCweb在廣州也只能算一般啦,其實。。。  回復  更多評論
            
          # re: java大數加法[未登錄] 2012-05-31 22:19 | helloworld
          package acm1000;

          import java.util.Scanner;

          public class Main
          {
          public static void main(String[] args)
          {
          // TODO Auto-generated method stub
          Scanner sc = new Scanner(System.in);
          String s1, s2;
          String SUM = "";
          int t;
          int a, b;
          int num;
          num = sc.nextInt();
          boolean j = false;
          int n = 0;
          do
          {
          s1 = sc.next();
          s2 = sc.next();
          System.out.println("Case " + ++n + ":");
          System.out.print(s1 + " + " + s2 + " = ");
          SUM = "";
          a = s1.length();
          b = s2.length();

          if (a <= b)
          {

          String splus = "";
          for (int p = 0; p < b - a; p++)
          splus += "0";
          s1 = splus + s1;

          a = b;
          t = a;
          }
          else
          {
          String splus = "";
          for (int p = 0; p < a - b; p++)
          splus += "0";
          s2 = splus + s2;
          b = a;
          t = a;
          }
          j = false;
          for (int i = 0; i <= t; i++)
          {

          if ((s1.length() > 0))
          {
          String c;
          c = "" + s1.substring(a - 1, a);
          String d = s2.substring(a - 1, a);
          s1 = s1.substring(0, a - 1);
          s2 = s2.substring(0, a - 1);
          a--;
          int cToInt = Integer.parseInt(c);
          int dToInt = Integer.parseInt(d);

          int sum = cToInt + dToInt;

          if (j == true)
          {
          sum = sum + 1;
          }
          if (sum >= 10)
          {
          j = true;
          sum = sum - 10;
          }
          else if (sum < 10)
          j = false;
          SUM = sum + SUM;
          }
          }
          if (j)
          SUM = 1 + SUM;
          System.out.println(SUM);
          System.out.println();
          }
          while (--num != 0);
          }

          }


          同JAVA,好像思想上跟你的第二個差不多。  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 红安县| 柘城县| 类乌齐县| 长泰县| 阜新| 铁岭县| 鲁山县| 府谷县| 陵川县| 克东县| 新昌县| 呼和浩特市| 临颍县| 常宁市| 呼玛县| 墨竹工卡县| 呼伦贝尔市| 桑日县| 监利县| 鱼台县| 遵义市| 孝义市| 桃园市| 聊城市| 和顺县| 屏南县| 沙雅县| 金华市| 旺苍县| 呼图壁县| 古蔺县| 萝北县| 启东市| 德保县| 特克斯县| 聂拉木县| 天水市| 乳源| 房山区| 大厂| 夹江县|