n进制数q转换成m进制数
来源:互联网 发布:js 数组删除元素方法 编辑:程序博客网 时间:2024/05/22 07:59
题目描述 Description
将n进制数q转换成m进制数 n和m<=36 q转换为10进制<=10^10
输入描述 Input Description
共两行 第一行 n和q 第二行 m
输出描述 Output Description
共一个数 表示n进制数q的m进制
样例输入 Sample Input
样例1:
10 23
13
样例2:
2 1010
7
样例输出 Sample Output
样例1:1A
样例2:13
数据范围及提示 Data Size & Hint
用反向取余法和乘权累积法
分析:问题可拆分为两个问题,然后合并。
- 将n进制的q转换为10进制的w
- 将10进制的w转化为m进制的ans
所以,即有代码如下:
首先运用乘权累加法解决第一个问题(因为最后要合并,所以最好将其写成主函数调用函数的形式):将m进制的n转换为10进制的ans
#include<iostream>using namespace std;int power(int m,int n){//power函数用于计算m的n次方 int ans=1; if(m==0) return 0; else if(m==1) return 1; for(int i=0;i<n;i++) ans*=m; return ans;}int change(int m,string n){ int ans=0; for(int i=0;i<n.size();i++){ if(n[i]-'9'<=0) ans+=(n[i]-'0')*power(m,n.size()-i-1); else ans+=(n[i]-'A'+10)*power(m,n.size()-i-1); } return ans;}int main(){ int m; string n; cin>>m>>n; cout<<change(m,n); return 0;}
接着运用反向取余法解决第二个问题:将10进制的n转化为m进制
#include<iostream>using namespace std;int main(){ int n,m,a[2000]={0},i=0; cin>>n>>m; while(n!=0){//将每位数存入数组 a[i++] = n%m; n /= m; } i--; for(;i>=0;i--){//输出数组,大于10的用字母表示 if(a[i]>9) cout<<(char)(a[i]-10+'A'); else cout<<a[i]; } return 0;}
最后两个问题合并即可:
#include<iostream>using namespace std;int power(int m,int n){ int ans=1; if(m==0) return 0; else if(m==1) return 1; for(int i=0;i<n;i++) ans*=m; return ans;}int change(int m,string n){//将m进制的n转换为10进制的ans int ans=0; for(int i=0;i<n.size();i++){ if(n[i]-'9'<=0) ans+=(n[i]-'0')*power(m,n.size()-i-1); else ans+=(n[i]-'A'+10)*power(m,n.size()-i-1); } return ans;}int main(){ int n,w,m,a[2000]={0},i=0; string q; cout<<"欢迎使用进制转换器"<<endl<<"使用说明(如您需要将2进制的1010转换为10进制则输入):\n2 1010\n10"; while(true){ cout<<endl<<"请输入进制与数:" ; cin>>n>>q; cout<<"请输入您需要转换的进制:"; cin>>m; w=change(n,q); while(w!=0){ a[i++] = w%m; w /= m; } i--; for(;i>=0;i--){ if(a[i]>9) cout<<(char)(a[i]-10+'A'); else cout<<a[i]; } } return 0;}
阅读全文
1 0
- n进制数q转换成m进制数
- 将一个N进制数转换成M进制数(源码)
- M 进制数转换为N进制数
- 将正整数N转换成m(2-16)进制数
- 【笔试题】N进制数向M进制数转换
- 给定一个十进制数M,以及需要转换的进制数N。 将十进制数M转化为N进制数
- n、m进制转换
- M进制转换成N进制思想
- m*n矩阵转换为n*m矩阵
- python 把一个m*n的二维矩阵转换成一个m*n行,三列的列表
- m进制转换为n进制
- printf()的转换说明符%m.n
- 十进数将其转换成 N 进制数
- 将一个数转换成n进制数
- 十进制数转换成N进制数
- n进制数转换成十进制数
- 进制转换(十进制数m转换成n进制)
- q , m download
- 设计模式之简单工厂模式,工厂方法模式,抽象工厂模式
- lintcode -- 最长公共前缀
- Git常用命令
- HDU 1263 水果 map
- 思考感悟2
- n进制数q转换成m进制数
- linux自带i2c工具使用
- codeforces 214B Hometask
- PAT1045快速排序
- bzoj2946 [Poi2000]公共串 后缀自动机
- 谈谈自己对教育的理解(K12)
- 欢迎使用CSDN-markdown编辑器
- tcp_server(简单版本,多进程版本,多线程版本)
- HTML常用的标签及属性总结