版权声明:转载无所谓的。。。 https://blog.csdn.net/xuxiayang/article/details/82817310
链接
https://www.luogu.org/problemnew/show/P1017
大意
将十进制数
转换为
进制数
(
为负数!)
思路
转换进制是一样的,都是除以 倒取余数,可是在计算机中的取模结果却是个相反数,所以我们可以让它“少减点”,这样就可以把模数变回正数,记得这个时候还要加上少减的次数
代码
#include<cstdio>
using namespace std;int n,m,j,a[1001],k,t;
signed main()
{
scanf("%d%d",&n,&m);//输入
printf("%d=",n);
while(n)
{
k=n%m;
t=n/m;
while(k<0) k-=m,t++;//代码核心
n=t;
a[++j]=k;
}
for(register int i=j;i>0;i--)
{
if(a[i]>9) putchar(a[i]+55);else//处理-10以下进制的情况
putchar(a[i]+48);//输出
}
printf("(base%d)",m);//输出
}