LUOGU P1017 [NOIP2000 提高组] 进制转换

LUOGU P1017:
前置芝士

(商+1)除数+(余数-除数)=商除数+除数+余数-除数=商*除数+余数=被除数

C++11 $\small(-std=c++11)$

$-19%-2=-1$,$-19/-2=9$,而 $9*-2+(-1)=-19$

所以只需要将模数转换为整数这道题就解了

#include<bits/stdc++.h>
using namespace std;
void zhuan(int n,int r) {
	if(n==0) return ;
	int m=n%r;
	if(m<0) m-=r,n+=r;
	if(m>=10) m='A'+m-10;
	else m+='0';
	zhuan(n/r,r);
	printf("%c",m);
	return ;
}
int read(){
	int x;
	scanf("%d",&x);
	return x;
}
int main() {
	int n=read(),r=read();
	string ans="";
	printf("%d=",n);
	zhuan(n,r);
	printf("(base%d)",r);
	return 0;
}
posted @ 2021-07-14 20:38  Ugeter  阅读(69)  评论(0)    收藏  举报