UVA424 - Integer Inquiry

题目链接:UVA424

大数相加问题,模拟手算即可,具体看代码:

 

#include<iostream>

#include<cstdio>

#include<cstring>

using namespace std;

char number[255]={'0'};

int answer[260]={0};

void reverse(char* pointer);

int main()

{

    int maxIndex=0;

    while(scanf("%s",number)&&strcmp(number, "0"))

    {

        int length=strlen(number);

        reverse(number);

        int index;

        int carryBit=0;

        for(index=0;index<length;index++)

        {

            carryBit=answer[index]+(number[index]-'0')+carryBit;

            answer[index]=carryBit%10;

            carryBit=carryBit/10;

        }

        while(carryBit)

        {

            carryBit=answer[index]+carryBit;

            answer[index++]=carryBit%10;

            carryBit=carryBit/10;

        }

        if(index>maxIndex)

            maxIndex=index;

    }

    int flag=1;

    for(int i=maxIndex;i>0;i--)

    {

        if(flag)

        {

            if(answer[i])

            {

                cout<<answer[i];

                flag=0;

            }

        }

        else

            cout<<answer[i];

    }

    cout<<answer[0]<<endl;

    memset(number,'0',255);

    return 0;

}

void reverse(char* pointer)

{

    int length=strlen(pointer);

    char temp;

    for(int i=0,j=length-1;i<j;i++,j--)

    {

        temp=pointer[i];

        pointer[i]=pointer[j];

        pointer[j]=temp;

    }

}


 

 

你可能感兴趣的:(Integer)