HDU 1002 A+B problemII

来源:互联网 发布:php电子商务网站源码 编辑:程序博客网 时间:2024/06/05 22:46

问题:我有一个简单的问题给你,给你两个整数,你的工作是计算A+B的和

输入:

第一行输入包括一个整数T(1<=T<=20)表示测试案例的数量。然后有T行,每行包括两个正数,A和B。注意到这两整数非常大,意味着你不能用32位的整数操作它们。你可以假设每个整数的长度不超过1000。

输出:

对于每一个案例,你应该输出两行。第一行是Case #:,第二行是A + B = ?,等号旁边都有空格。两个案例之间用空行隔起来。

Sample Input
21 2112233445566778899 998877665544332211
 
Sample Output
Case 1:1 + 2 = 3Case 2:112233445566778899 + 998877665544332211 = 1111111111111111110
import java.util.Scanner;//用字符串实现大数相加public class Main {public static void main(String[] args) {Scanner cin = new Scanner(System.in);int num=cin.nextInt();int j=0;for(j=0;j<num;j++){String a = cin.next();String b = cin.next();Add(num,j,a, b);}}public static void Add(int num,int j,String a, String b) {            //加法函数String a1 = invert(a);                                        //因为加法都是从低位开始,所以把数字倒过来String b1 = invert(b);if (a1.length() < b1.length()) {                              //将长度较长的放在前面String temp = a1;a1 = b1;b1 = temp;}int jin = 0;         //进位值char aa[] = a1.toCharArray();char bb[] = b1.toCharArray();int[] sum = new int[a1.length() + 1];for (int i = 0; i < b1.length(); i++) {                              //两个数都存在的情况下的加法int t = ((int) aa[i] - 48) + ((int) bb[i] - 48) + jin;if (t >= 10) {// 进位jin = t / 10;// 进位值t = t % 10;// 留下的值} elsejin = 0;sum[i] = t;}for (int i = b1.length(); i < a1.length(); i++) {                    //当一个数字加完之后,剩下长的数字余下的部分的加法,考虑进位的不同int t = jin + ((int) aa[i] - 48);if (t >= 10) {// 进位jin = t / 10;// 进位值t = t % 10;// 留下的值} elsejin = 0;sum[i] = t;}System.out.println("Case "+(j+1)+":");System.out.print(a+" + "+b+" = ");if (jin != 0) {sum[a1.length()] = jin;                                       //判断最后一位是否有进位。for (int i = a1.length(); i >= 0; i--) {System.out.print(sum[i]);                             //按字符输出}} else {for (int i = a1.length() - 1; i >= 0; i--)System.out.print(sum[i]);}System.out.println();if(j!=(num-1)){System.out.println();}}public static String invert(String str) {StringBuilder newStr = new StringBuilder();for (int i = str.length() - 1; i >= 0; i--)newStr.append(str.charAt(i));return newStr.toString();}}


0 0
原创粉丝点击