c++大整数加法
程序员文章站
2024-03-23 15:50:40
...
大整数加法
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int a1[201],a2[201],a3[201];
int a=0;#a记录位数
memset(a3,0,sizeof(a3));#把数组a3元素初始化为0,否则为原地址的元素;
string s1,s2,s3;
while((!(cin>>s1>>s2))){};#防止加数位数过大
#if语句把s1设置为较长的字符串
if(s1.size()<s2.size())
{
string temp;
temp=s1;
s1=s2;
s2=temp;
}
#for语句把s1里的字符转化数字存入a1数组
for(int i=0;i<s1.size();i++)
{
a1[i]=s1[i]-'0';
}
#for和s3=s3+s2把较短的字符串前面填充为0,是两加数的长短相同
for(int i=0;i<s1.size()-s2.size();i++)
{
s3.push_back('0');
}
s3=s3+s2;
#for将字符s3转换为数字存入a2数组
for(int i=0;i<s3.size();i++)
{
a2[i]=s3[i]-'0';
}
#从低位开始相加,低位存入数组
for(int i=s1.size()-1;i>=0;i--)
{
a3[-i+s1.size()-1]+=a1[i]+a2[i];#先相加,数字存入a3
a+=1;#做一次加法,a记录一次
if(a3[-i+s1.size()-1]>9)#处理进位
{
a3[-i+s1.size()-1]%=10;
a3[-i+s1.size()]+=1;
if(i==0)a+=1;#如果是最高位大于9,则还有进一次位
}
}
#for从最高位开始输出
for(int i=a-1;i>=0;i--)
{
cout<<a3[i];
}
}
上一篇: LeetCode刷题-加一
下一篇: leetcode刷题 66. 加一
推荐阅读
-
c++大整数加法
-
LeetCode 12. 整数转罗马数字 Java/C++ 贪心算法
-
整数相乘容易出错实例 博客分类: c++
-
整数相乘容易出错实例 博客分类: c++
-
C++实现任意长度整数抽象数据类型
-
动图演示 | C++实现六大排序算法
-
n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(N)
-
n个整数的无序数组,找到每个元素后面比它大的第一个数
-
找出数组中第k大的数(时间复杂度分析、C++代码实现). TopK in array. ( leetcode - 215 )
-
单调栈:n个整数的无序数组,要求找到每个元素后面比它大的第一个数,用vector返回,要求时间复杂度为O(N)