进制转换

进制转换小水题。。。

题目描述 Description
将m进制数n转化成一个十进制数 m<=16

题目保证转换后的十进制数<=100

输入描述 Input Description
共一行

n和m

输出描述 Output Description
共一个数

表示m进制的n化成十进制的数

#include <cstdio>

#include <algorithm>

#include <cstring>

#include <string>

#include <iostream>

using namespace std;



string s;



int main()

{

int m,ans=0;

cin>>s>>m;

int len=s.length();

for(int i=0;i<len;i++)

{

if(s[i]>64) s[i]=s[i]-'A'+10;    //从10开始 

else s[i]=s[i]-'0';

ans=(ans*m)+s[i];

}

cout<<ans;

return 0;

}

类似秦九韶算法,代码挺短的。
如果从末尾往前推,就要fan’yidian烦一点

#include<iostream>
#include<cstring>
#include<stdio.h>
#include<string.h>
#include<string>
using namespace std;
int main(){
string s;
int m;
int sum=0;
cin>>s>>m;
int len=s.length();
for(int i=len-1;i>=0;i--){
    if(s[i]>64){
        s[i]=s[i]-'A'+10;
    }
    else{
        s[i]=s[i]-'0';
    }
}
sum=s[len-1];
//cout<<sum<<endl;
int k=m;
for(int i=len-2;i>=0;i--){
    sum+=s[i]*m;
    m=m*k;
    //cout<<sum<<' '<<m<<endl;
}
cout<<sum<<endl;
return 0;
}

题目描述 Description
将十进制数n转换成m进制数 m<=16

n<=100

输入描述 Input Description
共一行

n和m

输出描述 Output Description
共一个数

表示n的m进制

样例输入 Sample Input
样例1:10 2

样例2:100 15

样例输出 Sample Output
样例1:1010

样例2:6A

数据范围及提示 Data Size & Hint
用反向取余法

#include<iostream>
#include<cstring>
#include<string.h>
using namespace std;
typedef struct Stack{
int num[100];
int top;
} node;
int main(){
int n,m;
int k;
cin>>n>>m;
node s1;
s1.top=0;
while(n){
    k=n%m;
    s1.num[s1.top]=k;
    s1.top++;
    n/=m;
}
while(s1.top){
    s1.top--;
    if(s1.num[s1.top]>=10){
        cout<<(char)('A'+(s1.num[s1.top]-10));
    }
    else{
        cout<<s1.num[s1.top];
    }
}
cout<<endl;
return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值