思路分析:
输入两个整数a=1456、b=789,输出两个整数相加的结果。
①将两个整数翻转
| 个位 | 十位 | 百位 | 千位 | |
|---|---|---|---|---|
| a | 6 | 5 | 4 | 1 |
| b | 9 | 8 | 7 | 0 |
②相加计算,逢十进一
a0+b0=6+9=15a_0+b_0=6+9=15a0+b0=6+9=15(进1留5)
a1+b1=5+8+1=14a_1+b_1=5+8+1=14a1+b1=5+8+1=14(进1留4)
a2+b2=4+7+1=12a_2+b_2=4+7+1=12a2+b2=4+7+1=12(进1留2)
a3+b3=1+0+1=2a_3+b_3=1+0+1=2a3+b3=1+0+1=2
③反向输出
2245
程序代码:
import java.util.Scanner;public class TwoBigNumAdd {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {String a = sc.next();String b = sc.next();int len = Math.max(a.length(), b.length());String ans = "";//保存模拟相加的结果//a b两个数翻转,个位在左对齐a = new StringBuffer(a).reverse().toString();b = new StringBuffer(b).reverse().toString();int jinwei = 0;//开始进位为0(从地位向高位的进位)for(int i=0;i<=len;i++) {int ai = i
思路分析:
输入两个整数a=17、b=25,输出两个整数相乘的结果。
①将两个整数翻转
| 个位 | 十位 | |
|---|---|---|
| a | 7 | 1 |
| b | 5 | 2 |
②相乘计算
a0∗b0=7∗5=35a_0*b_0=7*5=35a0∗b0=7∗5=35
a0∗b1=7∗2=14a_0*b_1=7*2=14a0∗b1=7∗2=14
a1∗b0=1∗5=5a_1*b_0=1*5=5a1∗b0=1∗5=5
a1∗b1=1∗2=2a_1*b_1=1*2=2a1∗b1=1∗2=2
③结果存入c
| c0c_0c0 | c1c_1c1 | c2c_2c2 |
|---|---|---|
| 35 | 14+5 | 2 |
④进位计算反向输出
425
程序代码:
package lianxi;import java.util.Scanner;public class TwoBigNumMul {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {String a = sc.next();String b = sc.next();int[] c = new int[a.length() + b.length()];a = new StringBuffer(a).reverse().toString();b = new StringBuffer(b).reverse().toString();for(int i=0;iint ai = a.charAt(i)-'0';for(int j=0;jint bj = b.charAt(j)-'0';c[i+j] = c[i+j] + ai*bj;}}for(int k=0;kint jinwei = c[k]/10;c[k] = c[k]%10;c[k+1] += jinwei;}int pos = c.length;while(c[--pos]==0);while(pos>=0)System.out.print(c[pos--]);}}
}