题目:Defining Labels
题目链接:https://codeforces.ml/group/5yyKg9gx7m/contest/270506/problem/C
题目描述:
用10-k到9来计数。
题目分析:
这个用一般的k进进制行不通,因为这里没有与0同功能的数字,增加一位时是k+1进的。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
int main()
{
int t,k,p,x,m,i;
char y[100];
scanf("%d",&t);
while(t--)
{
scanf("%d",&k);
p=10-k-1;
m=0;
scanf("%d",&x);
while(x)
{
if(x%k)
y[m++]=(x%k)+p+'0';
else
{y[m++]='9';x-=k;} //由于当余数为0时,不会截断,要另外讨论
x/=k;
}
for(i=m-1;i>=0;i--) printf("%c",y[i]);
printf("\n");
}
return 0;
}