Chuyển số nguyên sang biểu diễn cơ số âm (negative base). Chỉ cho phép cơ số từ -2 đến -10.
Ví dụ
n = 9, negBase = -3 → kết quả: "100"
Kiểm tra: 1×(-3)² + 0×(-3)¹ + 0×(-3)⁰ = 9 ✓
Thuật toán
- Nếu n=0 trả về "0"
- Lặp khi n≠0:
- remainder = n % negBase
- n /= negBase
- Nếu remainder < 0: remainder += (-negBase); n += 1
- Thêm remainder vào đầu kết quả
Chương trình C++
#include <bits/stdc++.h>
using namespace std;
string convert_str(int n) {
string str;
stringstream ss;
ss << n;
ss >> str;
return str;
}
string convert_nb(int n, int negBase) {
if (n == 0) return "0";
string converted = "";
while (n != 0) {
int remainder = n % negBase;
n /= negBase;
if (remainder < 0) {
remainder += (-negBase);
n += 1;
}
converted = convert_str(remainder) + converted;
}
return converted;
}
int main() {
int n = 9;
int negBase = -3;
cout << convert_nb(n, negBase);
return 0;
}
Kết quả
100
Các ví dụ khác
- 7 cơ số -2: 11011 (1×16 + 1×(-8) + 0×4 + 1×(-2) + 1×1 = 7)
- 10 cơ số -2: 11110