国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

華為上機測試題(大數(shù)相乘-java)

2019-11-14 21:14:32
字體:
供稿:網(wǎng)友
華為上機測試題(大數(shù)相乘-java

PS:這個不是自己寫的,測試OK,供參考。

/** * 大數(shù)相乘 */

  1 public class BigData {  2   3     public static void main(String[] args) {  4         // TODO Auto-generated method stub  5          StringBuffer sb = new StringBuffer();  6 //        String str1 = "99999999999";  7 //        String str2 = "99999999999";  8          for (int i = 0; i < 2000; i++) {  9          sb.append(9); 10          } 11          String str1 = sb.toString(); 12          String str2 = str1; 13          BigData test = new BigData(); 14         String result = test.mutiStr(str1, str2); 15         System.out.PRintln(result); 16     } 17      18     public String mutiStr(String str1, String str2) { 19         String result = null;// 存放結(jié)果字符串 20  21         // 確定負號 22         int flagStr1 = 0; 23         if (str1.startsWith("-")) { 24             flagStr1++; 25         } 26         int flagStr2 = 0; 27         if (str2.startsWith("-")) { 28             flagStr2++; 29         } 30         // ********************************************************************* 31  32         // 將數(shù)字放到整數(shù)數(shù)組,逆序,字符串尾部對齊 33         int[] arrStr1 = new int[str1.length() - flagStr1]; 34         for (int i = 0; i < arrStr1.length; i++) { 35             arrStr1[i] = str1.charAt(str1.length() - 1 - i) - '0'; 36         } 37         int[] arrStr2 = new int[str2.length() - flagStr2]; 38         for (int i = 0; i < arrStr2.length; i++) { 39             arrStr2[i] = str2.charAt(str2.length() - 1 - i) - '0'; 40         } 41         // *********************************************************************** 42  43         // 運算開始,arrStr2的每位去乘arrStr1的每位 44         StringBuffer subResult = new StringBuffer();// 中間結(jié)果 45         for (int i = 0; i < arrStr2.length; i++) { 46             StringBuffer midResult = new StringBuffer();// 每位結(jié)果 47             int subBenWei = 0;// 每位相乘時的本位上數(shù)字 48             int subJinWei = 0;// 每位相乘時的進位上數(shù)字 49             for (int k = 0; k < i; k++) { 50                 midResult.append(0);// 先添加0,確保每位末尾對齊,便于加法運算 51             } 52             for (int j = 0; j < arrStr1.length; j++) { 53                 subBenWei = (arrStr2[i] * arrStr1[j] + subJinWei) % 10; 54                 subJinWei = (arrStr2[i] * arrStr1[j] + subJinWei) / 10; 55                 midResult.append(subBenWei); 56                 if ((j == arrStr1.length - 1) && subJinWei > 0) { 57                     midResult.append(subJinWei);// 如果最前面位相乘有進位,結(jié)果添加進位數(shù)字 58                 } 59             } 60             if (0 == i) { 61                 subResult = midResult;// 第一位,子結(jié)果存放第一位結(jié)果 62             } else { 63                 // 各位對齊,確保中間結(jié)果和每位結(jié)果位數(shù)相同,便于相加運算 64                 if (midResult.length() > subResult.length()) { 65                     int diff = midResult.length() - subResult.length(); 66                     while (diff > 0) { 67                         subResult.append(0); 68                         diff--; 69                     } 70                 } else { 71                     int diff = subResult.length() - midResult.length(); 72                     while (diff > 0) { 73                         midResult.append(0); 74                         diff--; 75                     } 76                 } 77                 // ********************************************************* 78                 // 相加運算,結(jié)果放到subResult中 79                 int benWei = 0; 80                 int jinWei = 0; 81                 for (int j = 0; j < subResult.length(); j++) { 82  83                     benWei = ((subResult.charAt(j) - '0') 84                             + (midResult.charAt(j) - '0') + jinWei) % 10; 85                     jinWei = ((subResult.charAt(j) - '0') 86                             + (midResult.charAt(j) - '0') + jinWei) / 10; 87                     subResult.setCharAt(j, (char) (benWei + '0')); 88                 } 89                 // 如果最后相加任有進位,結(jié)果中添加進位 90                 if (jinWei > 0) { 91                     subResult.append(jinWei); 92                 } 93                 // *********************************************************** 94             } 95         } 96         // 判斷“-”的個數(shù),沒有或有兩個則為結(jié)果為正,不考慮,如只有一個則結(jié)果要添加“-” 97         if (1 == (flagStr1 + flagStr2)) { 98             subResult.append('-'); 99         }100         result = subResult.reverse().toString();// 最終子結(jié)果逆序,即為結(jié)果101         return result;102     }103 }


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 延安市| 仁布县| 沛县| 垫江县| 珠海市| 墨脱县| 天峻县| 昌平区| 合肥市| 闽侯县| 遵化市| 济南市| 南宁市| 葵青区| 怀来县| 泰宁县| 兴安盟| 昌江| 荆门市| 邹平县| 拜城县| 三原县| 锡林浩特市| 海南省| 建湖县| 满城县| 龙山县| 富民县| 如东县| 疏附县| 砚山县| 阿尔山市| 张家口市| 兴化市| 佛冈县| 乌兰察布市| 庄河市| 怀来县| 大宁县| 巴马| 张掖市|