进制转换(负数进制转换,牛客板子)***
取余运算结果的正负与右操作符无关
思路:tem=n%base(base<0),如果tem是负数,则tem-=base,n++.余数为正和正数的转化是一样的。
#include <bits/stdc++.h>
using namespace std;
int a[110];
signed main(){
int n, r, k = 0;
cin >> n >> r;
cout << n << "=";
if(n == 0) cout << 0;
else{
while(n){
a[++k] = n % r;
n /= r;
if(a[k] < 0) a[k] -= r, ++n;
}
for(int i = k; i >= 1; --i){
if(a[i] < 10) cout << a[i];
else cout << char(a[i] - 10 + 'A');
}
}
cout << "(base" << r << ")";
return 0;
}


浙公网安备 33010602011771号