Week 1 # A A + B Problem II
原题描述:
A - A + B Problem II
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.
InputThe first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000.
OutputFor each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line is the an equation "A + B = Sum", Sum means the result of A + B. Note there are some spaces int the equation. Output a blank line between two test cases.
Sample Input
2 1 2 112233445566778899 998877665544332211
Sample Output
Case 1: 1 + 2 = 3 Case 2: 112233445566778899 + 998877665544332211 = 1111111111111111110
第二次看到这个题目了,第一次是在杭电acm上,那时侯想了用数组,不过没做出来。其实这个题目不算难,我直接定义了两个个字符型数组用来存储算数,定义一个整形数组存储值。先判断那个数组长度大.
两个字符型数组从后面相加,存储到整形数组上,如果值大于10再向前进1(不可能大于20)一直到短的那个数组为0的时候停止相加。直接把长的赋值到上面就可以了,记得进位!
用长的字符型数组长度判断整形数组的长度。然后就可以输出了。代码复杂,但是浅显易懂。
AC代码:
1 #include <iostream> 2 #include <string.h> 3 const int N=1000; 4 using namespace std; 5 int main() 6 { 7 int t,l,m,n,sum[N+1]={0}; 8 int g=1; 9 char a[N],b[N]; 10 cin>>t; 11 while(t--) 12 { 13 int i; 14 cin>>a>>b; 15 m=strlen(a); 16 n=strlen(b); 17 l=m>=n?m:n; 18 if(m<=N&&n<=N) 19 { 20 if(m>=n) 21 { 22 for(i=0;n>0;i++) 23 { 24 sum[i]=sum[i]+(a[m-1]-'0')+(b[n-1]-'0'); 25 m--; 26 n--; 27 if(sum[i]>9) 28 { 29 sum[i]-=10; 30 sum[i+1]++; 31 } 32 } 33 for( ;m>0;i++,m--) 34 sum[i]=sum[i]+(a[m-1]-'0'); 35 } 36 else 37 { 38 for(i=0;m>0;i++) 39 { 40 sum[i]=sum[i]+(a[m-1]-'0')+(b[n-1]-'0'); 41 m--; 42 n--; 43 if(sum[i]>9) 44 { 45 sum[i]-=10; 46 sum[i+1]++; 47 } 48 } 49 for( ;n>0;i++,n--) 50 sum[i]=sum[i]+(b[n-1]-'0'); 51 } 52 } 53 if(sum[i]==0) 54 i--; 55 cout<<"Case "<<g<<":"<<endl; 56 g++; 57 cout<<a<<" + "<<b<<" = "; 58 for( ;i>=0;i--) 59 cout<<sum[i]; 60 for(i=0;i<=l;i++) 61 sum[i]=0; 62 if(t!=0) 63 cout<<endl<<endl; 64 else cout<<endl; 65 } 66 return 0; 67 }
Week 1 # A A + B Problem II的更多相关文章
- hdu1032 Train Problem II (卡特兰数)
题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能. (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...
- nyoj 623 A*B Problem II(矩阵)
A*B Problem II 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 ACM的C++同学有好多作业要做,最头痛莫过于线性代数了,因为每次做到矩阵相乘的时候,大 ...
- HDU 1002 A + B Problem II
A + B Problem II Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16104 Accepted ...
- A + B Problem II
之前总是在查阅别人的文档,看着其他人的博客,自己心里总有一份冲动,想记录一下自己学习的经历.学习算法有一段时间了,于是想从算法开始自己的博客生涯O(∩_∩)O~~ 今天在网上看了一道大数相加(高精度) ...
- nyoj 103 A + B problem II
点击打开链接 A+B Problem II 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 I have a very simple problem for you. G ...
- hdu 1023 Train Problem II
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1212 Train Problem II Description As we all know the ...
- HDU1002 -A + B Problem II(大数a+b)
A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 杭电ACM(1002) -- A + B Problem II 大数相加 -提交通过
杭电ACM(1002)大数相加 A + B Problem II Problem DescriptionI have a very simple problem for you. Given two ...
- hdoj 1002 A + B Problem II
A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdoj 1002 A + B Problem II【大数加法】
A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
随机推荐
- C. Friends
C. Friends 题意 对于任一点,求到此点距离不超过6的节点数. 分析 第一次dfs,形成一个以 1 为根的有向树,设 down[i][j] 为以i为根节点,距离 i 点距离不超过 j 的节点数 ...
- TreeMap集合特点、排序原理
TreeMap特点(类似于TreeSet): 1.无序,不允许重复(无序指元素顺序与添加顺序不一致) 2.TreeMap集合默认会对键进行排序,所以键必须实现自然排序和定制排序中的一种 3..底层使用 ...
- iOS开发之资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0+)
今天博客中,我们就来实现一下一些常用资讯类App中常用的分类选择的控件的封装.本篇博客中没有使用到什么新的技术点,如果非得说用到了什么新的技术点的话,那么勉强的说,用到了一些iOS9以后UIColle ...
- 浅谈Ubuntu PowerShell——小白入门教程
早在去年八月份PowerShell就开始开源跨平台了,但是一直没有去尝试,叫做PowerShell Core. 这里打算简单介绍一下如何安装和简单使用,为还不知道PowerShell Core on ...
- matplotlib.pyplot.hist
**n, bins, patches = plt.hist(datasets, bins, normed=False, facecolor=None, alpha=None)** ## 函数说明 用于 ...
- Cordova各个插件使用介绍系列(五)—$cordovaGeolocation获取当前位置
详情请看:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/cordova-5-cordovageolocation/ $cordov ...
- 给js动态创建的对象绑定事件
1.使用原生JS动态为动态创建的对象绑定事件 1-1.创建一个function,用来兼容IE8以下浏览器添加事件 function addEvent(el, type, fn) { if(el.ad ...
- 数列[专杀Splay版]
时间限制: 3 Sec 内存限制: 128 MB提交: 49 解决: 7 题目描述 输入一个数列,你需要进行如下操作: 1. 把编号为I的数值改为K 2. 输出从小到大排序后第k个数 输入 输 ...
- java实现Excel的导入、导出
一.Excel的导入 导入可采用两种方式,一种是JXL,另一种是POI,但前者不能读取高版本的Excel(07以上),后者更具兼容性.由于对两种方式都进行了尝试,就都贴出来分享(若有错误,请给予指正) ...
- jquery $.each 和for 怎么跳出循环
jquery $.each 和for 怎么跳出循环 1.for循环中我们使用continue:终止本次循环计入下一个循环,使用break终止整个循环.2.而在jquery中 $.each则对应的使用r ...