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

          ??? 網(wǎng)絡(luò)上還有另外一個(gè)版本:

          ?? 這又是一個(gè)版本:


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

          評(píng)論:
          # re: java大數(shù)加法 2009-03-10 14:20 | zy.weiliang@gmail.com
          ???為什么你要自己實(shí)現(xiàn),jdk本身即有大數(shù)的api,直接調(diào)用不就行了.
          除非他非要你自己實(shí)現(xiàn)這個(gè)算法.
          一般公司沒有這么變態(tài)吧,純粹為了考試而考試,又不是sun這樣的開發(fā)語言的公司.  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 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

          自己算一下,或數(shù)一下是多少位了。  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-10 16:35 | 張林君
          @zy.weiliang@gmail.com
          對(duì)啊,我也是這樣想的?
          或許作者不知道嗎?好像不太可能啊  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-10 16:43 | 張林君
          @隔葉黃鶯
          這個(gè)什么意思啊 有問題嗎?
          這個(gè)結(jié)果整數(shù)部分是1000位啊....  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-10 16:52 | 隔葉黃鶯
          小數(shù)部分還可以繼續(xù)  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法[未登錄] 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));
          }
          }
          }  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-10 19:47 | 王兵
          后面的評(píng)論有點(diǎn)跑題了

          不過確實(shí)在開發(fā)過程中沒有人會(huì)自己寫一個(gè)大數(shù)相加類  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-10 20:57 | 殘夢追月
          @隔葉黃鶯
          隔兄,你這個(gè)是什么意思啊?我沒搞明白耶……貌似這樣不行……  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-10 21:01 | 殘夢追月
          @aaa
          where is method "add()"?  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 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  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-10 22:45 | 隔葉黃鶯
          @殘夢追月
          BigDecimal和BigInteger就有 add() 方法的。你試一試吧。  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法[未登錄] 2009-03-11 10:13 | aaa
          @殘夢追月,
          where is method "add()"? 這是偷懶的辦法直接調(diào)用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);
          }
          }  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-11 13:06 | 殘夢追月
          @隔葉黃鶯
          寒!我只是知道有BigDecimal,卻還不知道BigInteger ,長見識(shí)了。
          我本來想用BigDecimal的,但是題目要求是自己實(shí)現(xiàn)……

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


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

          空串+小數(shù)點(diǎn) 為什么會(huì)出現(xiàn)這種情況?  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-11 13:07 | 殘夢追月
          @aaa
          o(∩_∩)o...,謝謝勒。長見識(shí)了,還有個(gè)BigInteger,還以為是你自己實(shí)現(xiàn)得……  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-11 13:51 | 隔葉黃鶯
          @殘夢追月
          不是空串+小數(shù)點(diǎn),用s2+".123456789" 是為了說明 BigDecimal 也能支持小數(shù)。  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-03-11 17:19 | 殘夢追月
          @隔葉黃鶯
          額……呵呵
            回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-07-21 10:40 | Frank_Fang
          請(qǐng)問你這個(gè)代碼著色是怎么做的?  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2009-08-17 10:16 | 殘夢追月
          @Frank_Fang
          看我頁面的源碼啊  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法 2011-07-09 17:16 | eraser0
          一般這種題目就是考細(xì)心而已啦。。。話說用BigInteger的話還算面試題目嗎。。。UCweb在廣州也只能算一般啦,其實(shí)。。。  回復(fù)  更多評(píng)論
            
          # re: java大數(shù)加法[未登錄] 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,好像思想上跟你的第二個(gè)差不多。  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 通化县| 饶阳县| 鱼台县| 汪清县| 凯里市| 仙游县| 汉寿县| 盘锦市| 盐亭县| 九龙坡区| 建水县| 黔西县| 牙克石市| 绥滨县| 阿拉尔市| 从化市| 珲春市| 庆城县| 肇东市| 武清区| 东兰县| 克东县| 富民县| 黄平县| 正定县| 栾城县| 霍邱县| 凤山县| 雅安市| 理塘县| 普洱| 浮山县| 邢台市| 清徐县| 肥西县| 南召县| 景谷| 利津县| 克什克腾旗| 定陶县| 富阳市|