高精度多进制计算器

困了 不想讲

点击查看题目>>来组洛谷

#include <bits/stdc++.h>

using namespace std ;
int B;
int a[2005],b[2005],c[2005];
char t1[2005],t2[2005];
int lenans;
void add();
int main()
{
    while(cin >> B)
    {
        cin >> t1 >> t2;
        add();
        for(int i=lenans;i>=0;i--)
        {
            if(!(c[i]/10))
                cout << c[i];
            else
            {
                char ch;
                ch=c[i]+55;
                cout << ch ;
            }
        }
        cout << endl ;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        memset(c,0,sizeof(c));
    }
    return 0;
}
void add()
{
    int len1=strlen(t1);
    int len2=strlen(t2);
    for(int i=0;i<len1;i++)
    {
        if(t1[i]>58)
            t1[i]-=7;
        a[len1-i-1]=t1[i]-48;
    }
    for(int i=0;i<len2;i++)
    {
        if(t2[i]>58)
            t2[i]-=7;
        b[len2-i-1]=t2[i]-48;
    }
    int m=max(len1,len2);
    for(int i=0;i<m;i++)
    {
        c[i]+=a[i]+b[i];
        if(c[i]>=B)
        {
            c[i+1]++;
            c[i]-=B;
        }
    }
    while(!c[m]&&m>=1)
        m--;
    lenans=m;
}

发布了44 篇原创文章 · 获赞 13 · 访问量 2349

猜你喜欢

转载自blog.csdn.net/NEFU_kadia/article/details/104139971