两个大整数相加
来源:互联网 发布:java实现链接ftp服务 编辑:程序博客网 时间:2024/05/17 09:39
问题描述
求两个不超过200 位的非负整数的和。
输入数据
有两行,每行是一个不超过200 位的非负整数,没有多余的前导0。
输出要求
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能
输出为0342。
输入样例
22222222222222222222
33333333333333333333
输出样例
Output Sample:
55555555555555555555
注意,这道题目,没有任何数据类型可以存储下这么大的数据,故只能用数组,首先我们可以用两个字符数组来存储两个相加的整数(因为只有我们可以进行整体输入),然后在进行类型转换(这里要用到两个整型来存储着两个数),然后在用一个数组来存储相加所得的和(这里要注意进位的问题)。
下面是我给出的代码:
#include<iostream>
#include<cstring>
using namespace std;
const int MAXN=200+5;
char str1[MAXN];
char str2[MAXN];
int str3[MAXN];
int str4[MAXN];
int str5[MAXN];
int main(void)
{
memset(str1,0,sizeof(str1));
memset(str2,0,sizeof(str2));
memset(str3,0,sizeof(str3));
memset(str4,0,sizeof(str4));
memset(str5,0,sizeof(str5));
cin>>str1>>str2;
int len1=strlen(str1);
int i;
int j=0;
for(i=len1-1; i>=0;i--)
{
str3[j++]=str1[i]-'0';
}
int len2;
len2=strlen(str2);
int j=0;
for(i=len2-1; i>=0; i--)
{
str4[j++]=str2[i]-'0';
}
int c=0;
for(i=0; i<MAXN; i++)
{
str5[i]=str4[i]+str3[i]+c;
c=str5[i]/10;//处理进位。
str5[i]%=10;
}
for(i=MAXN-1; i>=0&&str5[i]==0; i--);
if(i>=0)
{
for(; i>=0; i--)
{
cout<<str5[i];
}
cout<<endl;
}
return 0;
}
- 两个大整数相加
- 两个大整数相加
- 两个大的整数相加
- 两个大整数相加—高精度加法
- C++实现两个大整数相加
- 两个超大整数相加
- 任意两个整数相加
- 两个巨大整数相加
- 两个整数字符串相加
- 两个超大整数相加
- c++实现两个大整数相加(一)
- 大整数相加算法
- 大整数相加
- 大整数相加问题
- 大整数相加
- 大整数相加
- 大整数相加
- 大整数相加
- 一个应用程序中可以调用另一个应用程序吗??
- delphi label鼠标滑过事件
- 解决TCP粘包算法
- Android面试小计
- 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动
- 两个大整数相加
- web.xml中Servlet Filter的调用顺序
- Design Pattern: Default Adapter 模式
- 隐式加载各目录DLL
- ToolStrip工具条实现每次只有一个按键选中checked
- 转载:判断一个点是否在一个三角形面内
- rcp(插件开发)Application "XXX" could not be found in the registry的解决办法
- UVA:10300 - Ecological Premium
- uva11234 Expression (二叉树重建+层次遍历)