题目描述
假设有一个字符串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 }