TPC总部最近正在研究一套新的密码安全措施。
加密方式如下:
$\bullet$ 有一个加密密钥 $k$ ,($2\le k\le10$)
$\bullet$ 用这个密钥进行反进制转换。转换方式如下:平常的进制转换,根据密钥 $k$ ,转换的效果为每一位的数值范围是 $[0,k-1]$;
而反进制转换,则是根据密钥 $k$ ,转换的效果为每一位的数值范围是 $[10-k,9]$
$\bullet$ $eg.$ 在密钥为 $k=8$ 的反进制表上,第一个数是 $2$ ,第二个数是 $3$ ,第三个数是 $4$ ....第八个数字是 $9$ ,第九个数是 $22$主函数已给出:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void f(int n, int k);
int main() {
int T;
scanf("%d", &T);
while (T--) {
int k, n;
scanf("%d %d", &k, &n);
f(n, k);
printf("\n");
}
return 0;
}
第一行输入 $T$ ,($1\le T\le 10^4$)
对于每一组样例
输入两个正整数 $k$ ($2\le k\le10$), $n$ ($1\le n\le 10^9$)
对于每组测试样例,输出一组数字串,表示在密钥为 $k$ 的反进制表上第 $n$ 个数的值
k=8的时候,数字的取值范围为[2,9]。所以第一个数字是2,接着是3,4,5,6,7,8,9,第八个数字是9。第九个数字需要进1,所以个位是2,十位也是2。注意因为十位不能取1,所以直接是2了。因此,第9个数字是22。
第二个样例(k=2),每一位的范围是 [10-2,9] -> [8,9]
所以依次对应过去 第一个数是8,第二个数是9,第三个数进一位 88,第四个数 89,第五个数为 98,第六个数为 99,第七个数为 888
依次类推
第三个例子(k=8),每一位的范围是 [10-8,9] -> [2,9];
数数的次序:2,3,4,5,6,7,8,9,22,23,24,25,26,27,28,29,32
第16个数是29,第17个数就个位数进位形成 32