PAT——1022 D进制的A+B

来源:互联网 发布:中超数据库 编辑:程序博客网 时间:2024/05/22 01:36
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。输入格式:输入在一行中依次给出3个整数A、B和D。输出格式:输出A+B的D进制数。输入样例:    123 456 8输出样例:    1103
#include <iostream>#include <string.h>using namespace std;int main(){    int aa[100];    long long bb[100];     memset(aa,0,sizeof(aa));    memset(bb,0,sizeof(bb));    long long a,b,c,d;    cin>>a>>b>>d;    c=a+b;  //    cout<<c<<endl;     if(c==0)    {        cout<<0;        return 0;    }    else    {        long long sum=1;        int j=0;        while(1)        {            //cout<<sum<<" ";            bb[j]=sum;            sum*=d;            j++;            if(sum>c)            {                j--;                break;            }        }        //cout<<endl;        //for(int i=0;i<j;i++)        //{        //  cout<<bb[i]<<" ";        //  }        //  cout<<endl;        while(c>=d&&j)        {            //cout<<c<<" ";            if(c>=bb[j])            {                aa[j]=c/bb[j];                //cout<<aa[j]<<" ";                c%=bb[j];                j--;            }            if(c<bb[j])            {                aa[j]=0;                j--;            }        }        //cout<<endl;        aa[0]=c;        int x;        for(int i=99;i>=0;i--)        {            if(aa[i])            {                x=i;                break;            }        }        for(int i=x;i>=0;i--)        {            cout<<aa[i];        }        return 0;    } } 
原创粉丝点击