2023年12月14日发(作者:请假扣工资的计算方法)
任意进制的整数转换成十进制数
输入任意进制的整数,要求转换成十进制数并输出。
输入格式:
输入两个数,a表示任意进制的整数,N表示进制。
输出格式:
输出a的十进制数。
限制:
空间限制:128MByte
时间限制:1秒
样例:
输入:
100110 2
输出:
38
提示:
注意,最多16进制数,如果某位是10,用字符A表示,11用B表示....
例如,十六进制数AB,表示十进制数171
因为最多16进制,所以就可以按照 转进制原理 直接肝
#include
#include
using namespace std;
int math(int a, int b)
{
int num = 1;
for(int i = 1; i <= b; i++)
{
num *= a;
}
return num;
}
string c;
int a;
int main()
{
cin >> c >> a;
int len = ();
int ans = 0;
if(a == 2)
{ { int sum = math(2, len - 1); for(int i = 0; i < len; i++) { // cout << (c[i] - '0') << " " << ans << " " << sum << endl; ans += (c[i] - '0') * sum; sum /= 2; } } el if(a == 3) { int sum = math(3, len - 1); for(int i = 0; i < len; i++) { // cout << (c[i] - '0') << " " << ans << " " << sum << endl; ans += (c[i] - '0') * sum; sum /= 3; } } el if(a == 4) { int sum = math(4, len - 1); for(int i = 0; i < len; i++) { // cout << (c[i] - '0') << " " << ans << " " << sum << endl; ans += (c[i] - '0') * sum; sum /= 4; } } el if(a == 5) { int sum = math(5, len - 1); for(int i = 0; i < len; i++) { // cout << (c[i] - '0') << " " << ans << " " << sum << endl; ans += (c[i] - '0') * sum; sum /= 5; } } el if(a == 6) { int sum = math(6, len - 1); for(int i = 0; i < len; i++) { // cout << (c[i] - '0') << " " << ans << " " << sum << endl; ans += (c[i] - '0') * sum; sum /= 6; } } el if(a == 7) { int sum = math(7, len - 1); for(int i = 0; i < len; i++) { // cout << (c[i] - '0') << " " << ans << " " << sum << endl; ans += (c[i] - '0') * sum; sum /= 7; } } el if(a == 8) { int sum = math(8, len - 1); for(int i = 0; i < len; i++) { // cout << (c[i] - '0') << " " << ans << " " << sum << endl; ans += (c[i] - '0') * sum; ans += (c[i] - '0') * sum; sum /= 8; } } el if(a == 9) { int sum = math(9, len - 1); for(int i = 0; i < len; i++) { // cout << (c[i] - '0') << " " << ans << " " << sum << endl; ans += (c[i] - '0') * sum; sum /= 9; } } el if (a == 10) { cout << c; } el if(a == 11) { int sum = math(11, len - 1); for(int i = 0; i < len; i++) { if(c[i] == 'A') { ans += 10 * sum; sum /= 11; } el { ans += (c[i] - '0') * sum; sum /= 11; } } } el if(a == 12) { int sum = math(12, len - 1); for(int i = 0; i < len; i++) { if(c[i] == 'A') { ans += 10 * sum; sum /= 12; } el if(c[i] == 'B') { ans += 11 * sum; sum /= 12; } el { ans += (c[i] - '0') * sum; sum /= 12; } } } el if(a == 13) { int sum = math(13, len - 1); for(int i = 0; i < len; i++) { if(c[i] == 'A') { ans += 10 * sum; sum /= 13; sum /= 13; } el if(c[i] == 'B') { ans += 11 * sum; sum /= 13; } el if(c[i] == 'C') { ans += 12 * sum; sum /= 13; } el { ans += (c[i] - '0') * sum; sum /= 13; } } } el if(a == 14) { int sum = math(15, len - 1); for(int i = 0; i < len; i++) { if(c[i] == 'A') { ans += 10 * sum; sum /= 14; } el if(c[i] == 'B') { ans += 11 * sum; sum /= 14; } el if(c[i] == 'C') { ans += 12 * sum; sum /= 14; } el if(c[i] == 'D') { ans += 13 * sum; sum /= 14; } el { ans += (c[i] - '0') * sum; sum /= 14; } } } el if(a == 15) { int sum = math(15, len - 1); for(int i = 0; i < len; i++) { if(c[i] == 'A') { ans += 10 * sum; sum /= 15; } el if(c[i] == 'B') { ans += 11 * sum; sum /= 15; } } el if(c[i] == 'C') { ans += 12 * sum; sum /= 15; } el if(c[i] == 'D') { ans += 13 * sum; sum /= 15; } el if(c[i] == 'E') { ans += 14 * sum; sum /= 15; } el { ans += (c[i] - '0') * sum; sum /= 15; } } } el if(a == 16) { int sum = math(16, len - 1); for(int i = 0; i < len; i++) { if(c[i] == 'A') { ans += 10 * sum; sum /= 16; } el if(c[i] == 'B') { ans += 11 * sum; sum /= 16; } el if(c[i] == 'C') { ans += 12 * sum; sum /= 16; } el if(c[i] == 'D') { ans += 13 * sum; sum /= 16; } el if(c[i] == 'E') { ans += 14 * sum; sum /= 16; } el if(c[i] == 'F') { ans += 15 * sum; sum /= 16; } el { ans += (c[i] - '0') * sum; sum /= 16; } } } cout << ans;
cout << ans;
return 0;
}
当然,也可以换种方法做
#include
#include
using namespace std;
string s;
int n;
int a = 0;
int main()
{
cin >> s;
cin >> n;
for(int i = 0; i < (); i++)
{
if(s[i] > '9')
{
a = a * n + s[i] - 'A' + 10;
}
el
{
a = a * n + s[i] - '0';
}
}
cout << a;
return 0;
}
本文发布于:2023-12-14 11:43:49,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1702525429246190.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:任意进制的整数转换成十进制数.doc
本文 PDF 下载地址:任意进制的整数转换成十进制数.pdf
留言与评论(共有 0 条评论) |