当前位置:网站首页>P1017 进制转换(负进制&数论)

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

2021-08-10 08:02:32 wx6110fa547fd20

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

      
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

版权声明
本文为[wx6110fa547fd20]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_15326986/3328305