求大佬帮助 呜呜呜
  • 板块P1143 进制转换
  • 楼主wyzhf
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/10/2 10:39
  • 上次更新2023/11/5 12:16:30
查看原帖
求大佬帮助 呜呜呜
347979
wyzhf楼主2020/10/2 10:39
//只有20分,求大佬帮忙
//注释已经写好
#include <iostream>
#include <algorithm>
#include <cmath>
#define MaxSize 1001000
using namespace std;
long long a[MaxSize];
int value(char v)//将字母转为数字
{
    if(v>='0'&&v<='9')
        return v-'0';
    else if(v=='A')
        return 10;
    else if(v=='B')
        return 11;
    else if(v=='C')
        return 12;
    else if(v=='D')
        return 13;
    else if(v=='E')
        return 14;
    else if(v=='F')
        return 15;
}

void value_back(int v)//将数字转为字母输出
{
    if(v>=0&&v<=9)
        cout<<v;
    else if(v==10)
        cout<<'A';
    else if(v==11)
        cout<<'B';
    else if(v==12)
        cout<<'C';
    else if(v==13)
        cout<<'D';
    else if(v==14)
        cout<<'E';
    else if(v==15)
        cout<<'F';
}

int main()
{
    long long n,k,sum=0,i=0;string s;
    cin>>n;//n进制
    cin>>s;//输入的数
    cin>>k;//输出的进制
    for(int j=0;j<s.length();j++)
        sum+=value(s[j])*pow(n,j);//叠加,每一位相加转为10进制
    while(sum>0)//转换进制
    {
        a[i++]=sum%k;//每一位取余
        sum/=k;//除
    }
    for(int j=i-1;j>=0;j--)
        value_back(a[j]);//输出
    return 0;
}
2020/10/2 10:39
加载中...