基礎練習 高精度加法(java)
問題描述
輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。
演算法描述
由於a和b都比較大,所以不能直接使用語言中的標準資料型別來儲存。對於這種問題,一般使用陣列來處理。
定義一個陣列A,A[0]用於儲存a的個位,A[1]用於儲存a的十位,依此類推。同樣可以用一個陣列B來儲存b。
計算c = a + b的時候,首先將A[0]與B[0]相加,如果有進位產生,則把進位(即和的十位數)存入r,把和的個位數存入C[0],即C[0]等於(A[0]+B[0])%10。然後計算A[1]與B[1]相加,這時還應將低位進上來的值r也加起來,即C[1]應該是A[1]、B[1]和r三個數的和.如果又有進位產生,則仍可將新的進位存入到r中,和的個位存到C[1]中。依此類推,即可求出C的所有位。
最後將C輸出即可。
輸入格式
輸入包括兩行,第一行為一個非負整數a,第二行為一個非負整數b。兩個整數都不超過100位,兩數的最高位都不是0。
輸出格式
輸出一行,表示a + b的值。
樣例輸入
20100122201001221234567890
2010012220100122
樣例輸出
20100122203011233454668012
程式碼實現:
public class HighPrecisionSum {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] A = new int[100];
int[] B = new int[100];
int[] C = new int[102];
int carry = 0; //進位
boolean begin = false;
String a = in.nextLine();
String b = in.nextLine();
for(int i = 0; i < A.length; i++) {
A[i] = 0;
B[i] = 0;
C[i] = 0;
}
for(int i = 0; i < a.length(); i++) { //String轉為int
A[i] = a.charAt(a.length() - 1 - i) - 48;
}
for(int i = 0; i < b.length(); i++) { //String轉為int
B[i] = b.charAt(b.length() - 1 - i) - 48;
}
for(int i = 0; i < 100; i++) { //求和
int temp = A[i] + B[i] + carry;
C[i] = temp % 10; //A[i]和 B[i]相加的個位放在C [i]
carry = temp / 10; //A[i]和 B[i]的進位
}
if(carry != 0) {
C[100] = carry;
}
for(int i = C.length - 1; i >= 0; i--) { //判斷高位是否為0,為0不輸出,不為0輸出所有
if(begin) {
System.out.print(C[i]);
continue;
}
if(C[i - 1] != 0) {
begin = true;
}
}
}
}
相關文章
- JAVA 基礎練習題Java
- Java基礎 --- 綜合練習Java
- 高精度加法筆記筆記
- 高精度+低精度加法
- Java學習之基礎語法練習Java
- java基礎小練習(31-35)Java
- HTML基礎練習HTML
- MySQL基礎練習MySql
- Java程式設計基礎24——遞迴練習Java程式設計遞迴
- 高精度加法(C語言實現)C語言
- linux基礎練習題Linux
- IOS基礎-Masonry 練習iOS
- Python基礎練習題Python
- java--實驗二語法基礎練習(2)AXJava
- Java每日基礎恢復訓練Java
- 【躍遷之路】Java基礎練習(異常)(最後更新:2018.05.03)Java
- JAVA基礎--小練習_列印正三角形Java
- JAVA基礎 練習-13-ArrayList集合學生物件遍歷Java物件
- python 基礎之scrapy 原理練習Python
- python基礎 while迴圈練習PythonWhile
- 9道python基礎練習題Python
- python基礎語句小練習Python
- java基礎複習Java
- JAVA學習--JAVA基礎(一)Java
- java基礎第二季最後一節課練習Java
- python基礎(四)----列表、字典練習題Python
- 表單運用和基礎練習
- 【Java 反射學習】Java 反射基礎Java反射
- [Java 反射學習] Java 反射基礎Java反射
- Java基礎 --- 物件導向綜合訓練Java物件
- 大資料之JAVA基礎(五):迴圈和陣列方法練習大資料Java陣列
- Python3 (基礎練習)猴子吃桃Python
- 基礎練習——python特殊的數字——2020.11.17Python
- Day3--練習MySQL基礎語句MySql
- 題單5:基礎練習(rating1200)
- 【21】Python100例基礎練習(5)Python
- java基礎學習(目錄)Java
- java基礎複習-----泛型Java泛型