题目
给定一个整数,将其转化为7进制,并以字符串形式输出。
示例 1:
输入: 100
输出: "202"
示例 2:
输入: -7
输出: "-10"
注意: 输入范围是 [-1e7, 1e7] 。
思路
参考十进制转二进制:不断的去除,获得的余数逆置
789=1100010101(B)
789/2=394 余1 第10位
394/2=197 余0 第9位
197/2=98 余1 第8位
98/2=49 余0 第7位
49/2=24 余1 第6位
24/2=12 余0 第5位
12/2=6 余0 第4位
6/2=3 余0 第3位
3/2=1 余1 第2位
1/2=0 余1 第1位
class Solution {
public:
string convertToBase7(int num) {
if(num == 0) return "0";
// 符合判断
bool neg = false;
if(num < 0) neg = true;
// 负数溢出问题处理
long n = abs(long(num));
vector<int> res;
string res_num;
while(n != 0){
res.push_back(n%7);
n /= 7;
}
// 逆置获得解
if(neg) res_num += "-";
for(int i = int(res.size()-1);i >= 0;i--){
res_num += to_string(res[i]);
}
return res_num;
}
};