<pre name="code" class="cpp">3116 高精度练习之加法
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 黄金 Gold
题目描述 Description
给出两个正整数A和B,计算A+B的值。保证A和B的位数不超过500位。
输入描述 Input Description
读入两个用空格隔开的正整数
输出描述 Output Description
输出A+B的值
样例输入 Sample Input
3 12
样例输出 Sample Output
15
数据范围及提示 Data Size & Hint
两个正整数的位数不超过500位
*******在函数内定义的局部变量(包括数组)初始值都是不定的,不像在外部定义的全局变量
*************************故在使用前最后都清零
#include<iostream>
#include<string.h>
using namespace std;
void Plus(int a[],int b[],int la,int lb);
void run(char a[],char b[])
{
int A[501],B[501];
int i,j,la = strlen(a),lb = strlen(b);
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
for(i = 0; i < la; i++)
{
A[i] = a[la-i-1] - '0';
}
for(i = 0; i < lb; i++)
{
B[i] = b[lb-i-1] - '0';
}
Plus(A,B,la,lb);
}
void Plus(int a[],int b[],int la,int lb)
{
int i,j = 0,ANS[505];
memset(ANS,0,sizeof(ANS)); //清零,否则数都是随机的!!
/* for(i = 0; i < la; i++)
{
cout<<a[i];
}
cout<<endl;
for(i = 0; i < lb; i++)
{
cout<<b[i];
}
*/
for(i = 0; (i < la || i < lb) ; i++)
{
ANS[i] = (a[i]+b[i]+j) % 10;
j = (a[i]+b[i]+j) / 10;
}
i = 501;
while(ANS[i] == 0) i--;
for(j = i; j >= 0; j--)
cout<<ANS[j];
cout<<endl;
}
int main()
{
char a[501],b[501];
cin>>a>>b;
run(a,b);
return 0;
}
3116 高精度练习之加法
最新推荐文章于 2023-03-11 10:36:01 发布