进制转换小水题。。。
题目描述 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;
}