标签:
HDOJ题目地址:传送门
2 1 2 112233445566778899 998877665544332211
Case 1: 1 + 2 = 3 Case 2: 112233445566778899 + 998877665544332211 = 1111111111111111110
一:C++
#include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> using namespace std; int main(){ int n; cin>>n; getchar(); string a,b,c; int index=1; int result=n; while(n--){ cin>>a>>b; printf("Case %d:\n",index++); printf("%s + %s = ",a.c_str(),b.c_str()); c=""; int len_a,len_b; len_a=a.size(); len_b=b.size(); reverse(a.begin(),a.begin()+len_a); reverse(b.begin(),b.begin()+len_b); if(len_a>len_b){ for(int i=0;i<(len_a-len_b);i++){ b+='0'; } len_b=len_a; }else{ for(int i=0;i<(len_b-len_a);i++){ a+='0'; } len_a=len_b; } int temp,te=0,aa,bb; for(int i=0;i<len_a;i++){ aa=a[i]-'0'; bb=b[i]-'0'; temp=aa+bb+te; if(temp>=10){ te=1; c+=((temp-10)+'0'); }else{ te=0; c+=((temp)+'0'); } } if(te>0){ c+='1'; } int len_c=c.size(); reverse(c.begin(),c.begin()+len_c); if(index-1==result){ cout<<c<<endl; }else{ cout<<c+"\n"<<endl; } } }
二:JAVA
import java.math.BigInteger; import java.util.Scanner; public class Main { /** * 用来处理大数 * @param args */ public static void main(String[] args) { Scanner cin=new Scanner(System.in); int n= cin.nextInt(); int index=1; while(n-->0){ String s1=cin.next(); String s2=cin.next(); BigInteger a=new BigInteger(s1); BigInteger b= new BigInteger(s2); BigInteger c= a.add(b); System.out.println("Case " + (index++) + ":"); System.out.println(a.toString()+" + "+b.toString()+" = "+c.toString()); if(n>0) System.out.println(""); } cin.close(); } }
ACM--大数相加--HDOJ 1002--A + B Problem II
标签:
原文地址:http://blog.csdn.net/qq_26891045/article/details/51983502