标签:tgt size title mis 组成 计算 应该 整数 main
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 389710 Accepted Submission(s): 75441
问题描述
我有一个很简单的问题要问你。给定两个整数A和B,你的任务是计算A + B的和。
输入
输入的第一行包含一个整数T(1 <=T<= 20),这意味着测试用例的数量。然后T行跟随,每一行由两个正整数组成,A和b。注意整数非常大,这意味着你不应该使用32位整数来处理它们。您可以假定每个整数的长度不会超过1000。
输出
对于每个测试用例,您应该输出两行。第一行是“Case #:”,#表示测试用例的数量。第二行是“A + B = Sum”的方程,和表示A + B的结果。在两个测试用例之间输出一个空行。
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 int main() 5 { 6 string num1,num2,num; 7 int temp,j; 8 int maxsize,flag; 9 int *p1=nullptr,*p2=nullptr; 10 int all; 11 cin>>all; 12 for(int ri=1;ri<=all;++ri) 13 { 14 flag=false; 15 cin>>num1>>num2; 16 //将较长的字符串放置于unm1 17 if(num1.length()<num2.length()) 18 { 19 num=num1; 20 num1=num2; 21 num2=num; 22 flag=true; 23 } 24 //申请空间存放数字 25 maxsize=num1.length(); 26 p1=new int[maxsize]; 27 p2=new int[maxsize]; 28 //数组初始化所有为0 29 for(int i=0;i!=maxsize;++i) 30 p1[i]=p2[i]=0; 31 //将数字填入数组 32 j=0; 33 for(auto a:num1) 34 { 35 p1[j]=a-‘0‘; 36 ++j; 37 } 38 j=num1.length()-num2.length(); 39 for(auto a:num2) 40 { 41 p2[j]=a-‘0‘; 42 ++j; 43 } 44 //开始计算 45 for(int i=maxsize-1;i>=0;--i) 46 { 47 temp=p1[i]+p2[i]; 48 if(temp>=10) 49 { 50 if(i!=0) 51 { 52 p1[i]=temp%10; 53 p1[i-1]+=1; 54 } 55 else 56 { 57 p1[i]=temp; 58 } 59 } 60 else 61 p1[i]=temp; 62 } 63 //输出 64 cout<<"Case "<<ri<<":"<<endl; 65 if(flag) 66 cout<<num2<<" + "<<num1<<" = "; 67 else 68 cout<<num1<<" + "<<num2<<" = "; 69 for(int i=0;i!=maxsize;++i) 70 cout<<p1[i]; 71 if(ri!=all) 72 cout<<endl<<endl; 73 else 74 cout<<endl; 75 //释放空间 76 delete []p1; 77 delete []p2; 78 p1=nullptr; 79 p2=nullptr; 80 } 81 return 0; 82 }
标签:tgt size title mis 组成 计算 应该 整数 main
原文地址:http://www.cnblogs.com/BOW1203/p/7979365.html