进制转换

问题 L: 数制转换

时间限制: 5 Sec  内存限制: 125 MB
提交: 8  解决: 5
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

假设有一个字符串str的结构为:str='m<n>p'。这表示我们需要将str中的n进制数m,以p进制的形式输出。 

其中m, n, p 皆为整数,n, p两数均不小于2、不大于10(2 <= n, p <= 10),而m为数字串,长度不超过10位(0 <= m < n^10)。 

例如: 

    输入2<10>2 

    输出结果为2<10>=10<2> 

输入

输入一个字符串,形式如m<n>p。 

输出

输出数制转换后的结果(格式见样例)。 

样例输入 Copy

2<10>2

样例输出 Copy

2<10>=10<2>




 1 #include <iostream>
 2 #include <stdlib.h>
 3 #include <cstdio>
 4 #include <sstream>
 5 #include <string>
 6 #include <cstring>
 7 #include <algorithm>
 8 using namespace std;
 9 void tenzhuan(long int n, int t, string &s1){
10     s1 = "";
11     bool flag = true;
12     while(n){
13         int temp = n % t;
14         char c = temp + '0';
15         s1 += c;
16         n /= t;
17     }
18     reverse(s1.begin(), s1.end());
19 }
20 int main(){
21     long long m, n, p;//因为m最高位为10为所以必须是longlong 
22     scanf("%ld<%ld>%ld", &m, &n, &p);//m是需要被转化的数,n是m的初始进制,p是转化后的进制
23     char str[100];//用来存放转化结果
24     char str1[100];
25     char *str2;//用来存储垃圾字符 
26     stringstream ss;
27     ss << m;
28     ss >> str1;
29     long long ten = strtol(str1, &str2, n);
30     string s1;
31     tenzhuan(ten, p, s1);
32     cout << m << "<" << n << ">=" << s1 << "<" << p << ">";
33     return 0;
34 }

 

posted @ 2019-03-20 12:34  kakaluotedj  阅读(242)  评论(0编辑  收藏  举报