首页 > 专栏

任意进制的整数转换成十进制数

更新时间:2023-12-14 11:43:50 阅读: 评论:0

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 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|