题目连接 该题是luogu试炼场的2-11:T4 题目大意 给出 n 和 k,求实进制 n 的 k 进制表现方式;短除法!可以解决正数部分的问题,但是有负数参取模运算,过程会出现问题;浅显易懂的分析非常详细的讲解 题目分析 题目要求需要解决负数取模的问题,最终答案是正数; 解题思路: 设当前是k进制;当余数y是负数的时候,y+=k;转换为正数;同时 让 商 减少 k,不影响最后的运算结果。本题在回溯的时候输出,等同于(先存储,再反向输出); 代码1: #include <bits/stdc++.h> using namespace std; int a[20]; int n,k; void qiu(int x) { if(x==0) return ; int y=x%k;//y是余数 if(y<0)//余数转正 { y-=k; x+=k; } qiu(x/k); //回溯输出 if(y<10) printf("%d",y); else printf("%c",y-10+'A'); } int main() { scanf("%d %d",&n,&k); printf("%d=",n); qiu(n);//对k取模,逆向输出 printf("(base%d)",k); return 0; }