P1017 进制转换(负进制&数论)

P1017 进制转换(负进制&数论)

题目传送门

题意:给一个整数和基数,要求转化以该基数的该进制。

思路:题目主要难度为:余数可能是负数,因为转化为该进制表示时是用余数的倒序,由于除数(为负数)的绝对值比余数的绝对值大,所以用余数减去一个除数,商再加上一个除数即可以保证余数为正,且结果不变。

#include<bits/stdc++.h>
using namespace std;
void fun(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;//这里m是ASCII码 
	else  m=m+'0';
	fun(n/r,r);
	printf("%c",m); 
}
int main(){
	int n,r;
	cin>>n>>r;
	printf("%d=",n);
	fun(n,r);
	printf("(base%d)\n",r);
	return 0;
} 
全部评论

相关推荐

05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
点赞 评论 收藏
分享
04-28 22:33
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务