https://www.luogu.org/problemnew/show/P1017
将十进制数 n n n转换为 m m m进制数
( m m m为负数!)
转换进制是一样的,都是除以 m m m倒取余数,可是在计算机中的取模结果却是个相反数,所以我们可以让它“少减点”,这样就可以把模数变回正数,记得这个时候还要加上少减的次数
#include
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);//输出
}