m进制数转十进制数和十进制数转m进制数(m<=16)
来源:互联网 发布:施乐2011网络设置 编辑:程序博客网 时间:2024/06/07 02:58
m进制数转十进制数(乘权取余法)
#include<iostream>#include<cmath>using namespace std;int main(){ int n,m; int ans=0; cin>>n>>m; for(int i=6;i>=0;i--){ int a=n/pow(10,i); //1式 int b=n/pow(10,i+1); //2式 int c=pow(m,i); // 3式 ans+=(a-b*10)*c; //4式 } cout<<ans<<endl; return 0; }
1~4式主要是为了单步调试方便,可以写成一步。
但这只对于10进制以内的数转为十进制数有作用。比如16进制中单位存在A~F用int型则不能准确表示了。
为适应更高数制,修正后的代码如下(当然为了题目要求这里最高数制可以转换到16进制数):
#include<iostream>#include<cmath>#include<string>using namespace std;int main(){ string n; int m; int ans=0; cin>>n>>m; int q=n.size(); for(int i=0;i<q;i++){ if(n[i]<=57&&n[i]>=48) ans+=(n[i]-48)*pow(m,q-i-1); if(n[i]<=70&&n[i]>=65) ans+=(n[i]-55)*pow(m,q-i-1); if(n[i]<=102&&n[i]>=97) ans+=(n[i]-87)*pow(m,q-i-1); } cout<<ans<<endl; return 0; }
十进制数转m进制数(反向取余法)
#include<iostream>#include<cmath>#include<string>using namespace std;int main(){ int n,m; cin>>n>>m; char num[100]; int res=n,i=0,cnt,p; while(res!=0){ res=n/m; p=n%m; if(p==10)num[i++]='A'; else if(p==11)num[i++]='B'; else if(p==12)num[i++]='C'; else if(p==13)num[i++]='D'; else if(p==14)num[i++]='E'; else if(p==15)num[i++]='F'; else num[i++]=p+48; n=res; } cnt=i; for(i=cnt-1;i>=0;i--) cout<<num[i]; cout<<endl; return 0; }
阅读全文
0 0
- m进制数转十进制数和十进制数转m进制数(m<=16)
- 十进制数M转N进制
- 十进制转m进制(m<=16)
- 十进制转化为m进制(m<=16)
- 将一个m进制数转换为十进制数
- 给定一个十进制数M,以及需要转换的进制数N。 将十进制数M转化为N进制数
- 十进制转m进制
- 十进制转m进制
- 编写将一个十进制数M转化成N进制数(2≤N≤16)的程序.
- 1474 十进制转m进制+1475 m进制转十进制
- wikioi 十进制转m进制
- 问题 M 十六进制转十进制
- m进制转十进制
- 十进制转换m进制
- 使用Dev c++ 将m进制数n转化成一个十进制数
- 进制转换(十进制数m转换成n进制)
- wikioi p1474 十进制转m进制
- wikioi之1474 十进制转m进制
- 一些bug
- stm32 boot0 boot1的启动方式
- 设备树那些事
- WireShark 2.4 Windows10下捕获通信数据
- JavaScript构造创建Map对象
- m进制数转十进制数和十进制数转m进制数(m<=16)
- Oracle恢复某个表中的数据到某个过去时间
- 转:交叉验证在sklearn中的实现
- 一个简单的计时器
- 给初学者的RxJava2.0教程(二)
- dvaJs + react 快速构建项目
- 基于Sentinel的Redis集群(主从&Sharding)的redis封装实现
- 多线程使用之主线程与多线程响应同步
- Perl CPAN install PM package