大きな整数の合計

[問題の説明]大きな整数の合計
プログラミング言語でプログラミングする場合、非常に大きな整数または非常に高い演算精度を必要とする整数(大きな整数と呼ばれます)を処理することができます。このような大きな整数は、言語の基本データを使用しますタイプを直接表現することはできません。長整数を処理する一般的な方法は、配列を使用して長整数を格納することです。つまり、比較的大きな整数配列を開き、配列要素は長整数の1ビットを表し、配列要素の操作を通じて長整数の操作をシミュレートします。
大きな整数の場合、C = A + Bを求めます。2つのシーケンステーブルAとBを使用して2つの大きな整数を格納し、シーケンステーブルCを使用して合計結果を格納できます。加算操作を容易にするために、長整数の下位ビットをシーケンステーブルの下端に格納できます。シーケンステーブルの長さは、長整数のビット数を示します。
【入力形式】長整数2桁。
【出力形式】集計結果Cを上位から下位へ出力します。
[入力例]
987654321
99997531
[出力例]
1087651852
[説明]キーボードから長整数を入力すると、通常は文字配列に格納されるため、長整数をセグメントに入力する必要はありません。もちろん、文字を数字。

#include <iostream>
#include <cstdio>
using namespace std;
int ma (int a,int b)
{
    if(a>b)
        return a;
    else
        return b;
}
int mi (int a,int b)
{
    if(a<b)
        return a;
    else
        return b;
}
int main()
{
    char s1[100],s2[100];
    int i,j,n1=0,n2=0,m1,m2;
    scanf("%s",s1);
    scanf("%s",s2);
    for(i=0;s1[i];i++)
    {
        n1++;
    }
    for(i=0;s2[i];i++)
    {
        n2++;
    }
    int a1[n1],a2[n2];
    for(i=0;i<n1;i++)
    {
        a1[i]=s1[i]-'0';
    }
    for(i=0;i<n2;i++)
    {
        a2[i]=s2[i]-'0';
    }
    m2=ma(n1,n2);
    m1=mi(n1,n2);
    int b[m2],n=0;
    for(i=0;i<m2;i++)
    {
        n1--;
        n2--;
        if(n1>-1&&n2>-1)
        {
            b[i]=a1[n1]+a2[n2]+n;
            if(b[i]>=10&&i!=m2-1)
            {
                n=b[i]/10;
                b[i]=b[i]%10;
            }
            else if(b[i]<10&&i!=m2-1)
                n=0;
            else if(i==m2-1)
            {
                b[i]=b[i];
            }
        }
        else if(n1<=-1&&n2>-1)
        {
            b[i]=a2[n2]+n;
            if(b[i]>=10&&i!=m2-1)
            {
                n=b[i]/10;
                b[i]=b[i]%10;
            }
            else if(b[i]<10&&i!=m2-1)
                n=0;
            else if(i==m2-1)
                b[i]=b[i];
        }
        else if(n2<=-1&&n1>-1)
        {
            b[i]=a1[n1]+n;
            if(b[i]>=10&&i!=m2-1)
            {
                n=b[i]/10;
                b[i]=b[i]%10;
            }
            else if(b[i]<10&&i!=m2-1)
                n=0;
            else if(i==m2-1)
                b[i]=b[i];
        }

    }
    for(i=m2-1;i>=0;i--)
    {
        cout<<b[i];
    }
    return 0;




}

31件の元の記事を公開しました 賞賛されました8 訪問2157

おすすめ

転載: blog.csdn.net/weixin_44034024/article/details/104660735