VagrantAC

负数的进制转化存在一个余数是否为正数。

例如:

-5 的 -2 进制计算。

-5 / -2 =  3 余 1
 3 / -2 = -1 余 1
-1 / -2 =  1 余 1
 1 / -2 =  0 余 1

那么 -5 的二进制位 1111

5 的 -2 进制计算。

 5 / -2 = -2 余 1
-2 / -2 =  1 余 0
 1 / -2 =  0 余 1

那么 5 的二进制位 101

洛谷 P1017

#include <cstdio>
#include <vector>
#include <iostream>
using namespace std;
char base[]={\'0\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'A\',\'B\',\'C\',\'D\',\'E\',\'F\',\'G\',\'H\',\'I\',\'J\'};
int main(){
    int N,R;
    cin>>N>>R;
    vector<char>v;
    cout<<N<<"=";
    while(N){
        v.push_back((N%R-R)%R);
        N-=(N%R-R)%R;N/=R;
    }
    if(v.size()==0)v.push_back(0);
    for(int i=v.size()-1;i>=0;i--)
        cout<<base[v[i]];
    cout<<"(base"<<R<<")"<<endl;
    return 0;
}

分类:

技术点:

相关文章: