八进制转二进制(递归)
题目描述 Description
将一个八进制数转化为一个二进制数。
输入描述 Input Description
一行,一个八进制下的整数
输出描述 Output Description
这个八进制数对应的二进制结果
样例输入 Sample Input
1234567654321
样例输出 Sample Output
1010011100101110111110101100011010001
数据范围及提示 Data Size & Hint
八进制数转换得到的十进制数结果有可能超过long long。
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 int len,cnt=0; 7 void f(string s) 8 { 9 ++cnt; 10 len = s.size(); 11 if(len==0) 12 return; 13 else 14 { 15 int t[3] = {0}, n; 16 n = s[0] - '0'; 17 for (int i = 2; i >= 0; --i) 18 { 19 t[i] = n % 2; 20 n = n / 2; 21 } 22 if(cnt==1) 23 { 24 int x = 0; 25 for (int i = 0; i < 3; ++i) 26 { 27 if(t[i]!=0) 28 ++x; 29 if(x!=0) 30 cout << t[i]; 31 } 32 } 33 else 34 { 35 for (int i = 0; i < 3; ++i) 36 cout << t[i]; 37 } 38 s.erase(0, 1); 39 f(s); 40 } 41 } 42 43 int main() 44 { 45 string s1; 46 cin >> s1; 47 f(s1); 48 return 0; 49 }