C++:把一个数从M进制转为N进制。
来源:互联网 发布:菲凡网络 编辑:程序博客网 时间:2024/05/19 18:15
先给一张ascii的试验图给大家看,显然可见,'0'+10!='A',所以我们要单独创建一个多进制字符表。
多进制字符映射表。
#include <iostream>#include <string>using namespace std;string chageMtoN(string&str, int M, int N){ int hashch[256]; for (int i = 0; i <= 9; ++i) hashch['0' + i] = i; for (int i = 10; i <= 35; ++i) hashch['A' + i-10] = i; char hashnum[256]; for (int i = 0; i <= 9; ++i) hashnum[i] = '0' + i; for (int i = 10; i <= 35; ++i) hashnum[i] = 'A' + i-10; //m进制(数字)字符串转为n进制字符串。(先由m进制转为10进制,再由10进制转为n进制) int realval = 0; char maxch = hashnum[M]; for (int i = 0; i < str.size(); ++i){ if (str[i]>maxch) return "Error"; realval = M*realval + hashch[str[i]];// /* m进制字符串src转为10进制数i */ } string res; while (realval){ int cur = realval%N; res = hashnum[cur] + res;/* 辗转相除得出逆序的n进制表示在res */ realval = realval / N; } return res;}int main(){ while (1){ string str; int M, N; cin >>str>> M >> N; cout << chageMtoN(str, M, N) << endl; } return 0;}
0 0
- C++:把一个数从M进制转为N进制。
- 将一个数从M进制转换成N进制
- m进制转为n进制(0<m,n<=10)
- M进制字符串转为N进制字符串
- 组合数C(n,m)
- 数的进制转换算法-m进制到n进制
- 组合数算法 C(n,m)(n>=m)
- 将一个M进制的数N转换成十进制表示的式子。
- 从键盘输入行数m,列数n,从堆上动态分配一个m行,n列的int型二维数组,并从键盘
- [算法] 求排列组合: 从n个数中任选m个数组成一个新数
- 计算组合数C(m,n)
- 变态组合数C(n,m)求解
- 求组合数c(n,m)
- 计算组合数C(n,m)
- 组合数C(n,m)的计算
- codeforces 630~~【组合数 C(n,m)】
- 求组合数(c(m,n))
- 求组合数C(n , m)
- synchronized二三事2
- USB Gadget设备驱动开发(二) USB Gadget UVC 软件流程分析
- 嵌入式编译器gcc的笔记
- 浅析虚拟机的类加载机制
- 将博客搬至CSDN
- C++:把一个数从M进制转为N进制。
- ubuntu安装apache学习记录
- problem C: 分数类的乘法
- C++编程:连续的字符替换成“连续出现的个数+字符”
- 深入浅出REST
- 简述java集合中的List
- 四大组件之 幸苦的劳动者Service
- Django 表单
- 零基础写python爬虫之爬虫编写全记录