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;
}

分类:

技术点:

相关文章:

  • 2022-01-02
  • 2022-02-02
  • 2021-12-29
  • 2022-01-19
  • 2021-06-28
  • 2021-11-19
  • 2021-12-18
猜你喜欢
  • 2021-10-31
  • 2021-06-09
  • 2022-12-23
  • 2022-01-27
  • 2021-10-28
  • 2022-01-16
  • 2021-06-29
相关资源
相似解决方案