秦九韶算法:
C++ 秦九韶算法_yq_sprite的博客-CSDN博客_秦九韶算法
求任意两个不同进制非负整数的转换(2 进制 ∼∼ 16 进制),所给整数在 int 范围内。
不同进制的表示符号为(0,1,…,9,a,b,…,f)或者(0,1,…,9,A,B,…,F)
输入格式
输入只有一行,包含三个整数 a,n,b。a 表示其后的 n 是 a 进制整数,b 表示欲将 a 进制整数 n 转换成 b 进制整数。
a,b 是十进制整数。
数据可能存在包含前导零的情况。
输出格式
输出包含一行,该行有一个整数为转换后的 b 进制数。
输出时字母符号全部用大写表示,即(0,1,…,9,A,B,…,F)。
数据范围
2≤a,b≤16,
给定的 a 进制整数 n 在十进制下的取值范围是 [1,2147483647]。
输入样例:
15 Aab3 7
输出样例:
210306
#include<bits/stdc++.h>
using namespace std;
int ctoi(char c)
{
if(c<='9')return c-'0';
if(c<='Z')return c-'A'+10;
return c-'a'+10;
}
char itoc(int c)
{
if(c<=9)return c+'0';
return 'A'+c-10;
}
int main()
{
int a,b;
string number;
cin>>a>>number>>b;
int n=0;
for(auto c : number)n=n*a+ctoi(c);//秦九韶算法
string res;
while(n)
res+=itoc(n%b),n/=b;
reverse(res.begin(),res.end());
cout<<res;
return 0;
}