文章
36
粉丝
505
获赞
55
访问
372.5k
提供两种模拟加法的方法:
(一般来说数组模拟效率更高)
1.用数组来模拟加法
#include<bits/stdc++.h>
using namespace std;
int a[1005], b[1005], c[1005];//c存答案
int main()
{
string A, B;
while (cin >> A >> B)
{
//初始化
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(a));
memset(c, 0, sizeof(a));
//这里将字符转换成数字,并且反着记录,这样是为了之后做加法从后往前处理更方便
int len = max(A.length(), B.length());
for (int i = A.length() - 1, j = 1; i >= 0; i--, j++)
a[j] = A[i] - '0';
for (int i = B.length() - 1, j = 1; i >= 0; i--, j++)
b[j] = B[i] - '0';
//从后往前做加法,模拟进位
for (int i = 1; i <= len; i++)
{
c[i] += a[i] + b[i];
c[i + 1] = c[i] / 10;
c[i] %= 10;
}
//如果第len+1位不为0说明最高位进了一位
if (c[len + 1])
len++;
//反向输出
for (int i = len; i >= 1; i--)
cout << c[i];
cout << endl;
}
return 0;
}
2.用字符串模拟加法
#include<bits/stdc++.h>
using namespace std;
int main()
{
string A, B;
wh...
登录后发布评论
暂无评论,来抢沙发