【题解】P1017 进制转换
题面
前言
无聊的进制转换
正文
正数是相当好处理的……
整除简单余 \(0\) 即可
重点是对于负数且无法整除的情况……
也好办捏,多商一,然后余数就为正力!
代码
#include<iostream>
#include<cstdio>
using namespace std;
char z[20]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J'};
inline void solve(int n,int m){
if(n==0){
return;
}
if(n>0||n%m==0){
solve(n/m,m);
printf("%c",z[n%m]);
return;
}else{
solve(n/m+1,m);
printf("%c",z[-m+n%m]);
return;
}
return;
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
printf("%d=",n);
solve(n,m);
printf("(base%d)",m);
return 0;
}
后记
水题……
完结撒花!