【题解】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;
}

后记

水题……

完结撒花!

posted @ 2024-12-23 19:34  sunxuhetai  阅读(8)  评论(0)    收藏  举报