负进制转换过程与正进制相同
不断取模向下计算
但是负进制在模的过程中会模出负数
若为负数 该步需要特殊操作
ans = mode[a - (a / b + 1) * b] + ans;
a = a / b + 1;
#include <iostream>
using namespace std;
typedef long long ll;
int main()
{
string mode = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string ans;
ll a, b;
cin>>a>>b;
ll ta = a;
while(a)
{
if(a % b >= 0)
{
ans = mode[a % b] + ans;
a /= b;
}
else
{
ans = mode[a - (a / b + 1) * b] + ans;
a = a / b + 1;
}
}
cout<<ta<<'=';
cout<<ans;
cout<<"(base"<<b<<")"<<endl;
return 0;
}