进制转换(负数进制转换,牛客板子)***

[NOIP2000]进制转换

取余运算结果的正负与右操作符无关
思路: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;
}
posted @ 2025-03-16 14:39  awei040519  阅读(16)  评论(0)    收藏  举报