【简单思考】高精度系列0.1 ——高精度加法

高精度加法

高精度系列居然还没A完,呜呜、、、

例题

http://10.12.2.188/JudgeOnline/problem.php?id=1125

代码

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
using namespace std;
int a[1000];
int b[1000];
char strrrrrrrrr[1000];
int tmp;
void pre(int x[],char strrrrrrrrr[])
{
    x[0]=strlen(strrrrrrrrr);
    for (int i=1;i<=x[0];i++)
        x[i]=int(strrrrrrrrr[x[0]-i])-48;
}
int main()
{
    while (cin>>strrrrrrrrr)
    {
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    pre(a,strrrrrrrrr);
    cin>>strrrrrrrrr;
    pre(b,strrrrrrrrr);
    //========================
    a[0]=max(a[0],b[0]);
    for (int i=1;i<=a[0];i++)
    {
        a[i]=a[i]+b[i]+tmp;
        tmp=a[i]/10;
        a[i]%=10;
    }
    while (tmp>0) {a[0]++;a[a[0]]=tmp%10;tmp/=10;}
    //========================
    for (int i=a[0];i>=1;i--)
        cout<<a[i];
    cout<<endl;
    }
    return 0;
}
    

 结果

注意点

1.读入部分用函数写的话,数组调用进函数的三种方式:

                        ①定义struct

                        ②void pre(int a[])

                        ③void pre(int* a)

2.str是保留字,不能乱用(请无视我的一堆r)

3.读入以后要减去48,int('0')是等于48的,而不是0

4.memset格式是memset(a,0,sizeof(a));第二第三项不要弄反了

5.注意输入格式,虽然字符串是读到空格停止

原文地址:https://www.cnblogs.com/seekdreamer/p/3986483.html