博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2981:大整数加法-poj
阅读量:4456 次
发布时间:2019-06-08

本文共 1308 字,大约阅读时间需要 4 分钟。

2981:大整数加法

总时间限制: 
1000ms
内存限制: 
65536kB
描述

求两个不超过200位的非负整数的和。

输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
2222222222222222222233333333333333333333
样例输出
55555555555555555555
来源
程序设计实习2007
思路:数据用字符串输入,将字符串转换为整型,转换的时候逆序,以便于后面进位,求和,去0输出!注意考虑到0+0的情况!
代码:
#include
#include
#include
#include
using namespace std;#define MAXLEN 2001int a1[MAXLEN+10];int a2[MAXLEN+10];char str1[MAXLEN+10];char str2[MAXLEN+10];int main(){ int i,j; memset(a1,0,sizeof(a1));//分配内存并初始化整型数组 memset(a2,0,sizeof(a2)); int Len1,Len2;//定义字符数组的长度 scanf("%s%s",&str1,&str2); Len1=strlen(str1); Len2=strlen(str2); j=0; for(i=Len1-1;i>=0;i--)//将字符串1转换为整型 { a1[j]=str1[i]-'0'; j++; } j=0; for(i=Len2-1;i>=0;i--)//将字符串2转换为整型 { a2[j]=str2[i]-'0'; j++; } if(Len1
=10) { a1[i]=a1[i]-10; a1[i+1]=a1[i+1]+1; } } for(i=Len1;a1[i]==0&&i>=0;i--);//去掉多余的0,输出和 if(i>=0) { for(;i>=0;i--) printf("%d",a1[i]); } else printf("0");//0+0的情况 return 0;}

 

转载于:https://www.cnblogs.com/gcter/p/7374302.html

你可能感兴趣的文章
[myeclipse]@override报错问题
查看>>
자주 쓰이는 정규표현식
查看>>
超简单的listview单选模式SingleMode(自定义listview item)
查看>>
vue-11-路由嵌套-参数传递-路由高亮
查看>>
HDU 1199 - Color the Ball 离散化
查看>>
[SCOI2005]骑士精神
查看>>
Hibernate原理解析-Hibernate中实体的状态
查看>>
六时车主 App 隐私政策
查看>>
C语言常见问题 如何用Visual Studio编写C语言程序测试
查看>>
Web用户的身份验证及WebApi权限验证流程的设计和实现
查看>>
hdu 2098 分拆素数和
查看>>
[ONTAK2010]Peaks kruskal重构树,主席树
查看>>
ECMAScript6-let与const命令详解
查看>>
iOS 使用系统相机、相册显示中文
查看>>
什么是敏捷设计
查看>>
SCSS的基本操作
查看>>
"安装程序无法定位现有系统分区" 问题解决
查看>>
.NET中栈和堆的比较
查看>>
【莫队】bzoj 3781,bzoj 2038,bzoj 3289
查看>>
如何优化limit
查看>>