Start: Jan, 09, 2021 18:00:00
2020年秋季学期程序设计基础(C语言)第四次考试 (补题)
End: Jan, 31, 2022 22:00:00
Time elapsed:
Time remaining:

情报加密 2858

Time Limit:  1 s      Memory Limit:   32 MB
Submission:248     AC:42     Score:0

Description

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$


现在TPC需要制作一份反进制密码表,并将这份表发放给分部用于解密。
现给定一个数值 $n$ ,在密钥为 $k$ 的反进制表上,求这份表上第 $n$ 个数

主函数已给出:


#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;
}


Input

第一行输入 $T$ ,($1\le T\le 10^4$)
对于每一组样例
输入两个正整数 $k$ ($2\le k\le10$), $n$ ($1\le n\le 10^9$)

Output

对于每组测试样例,输出一组数字串,表示在密钥为 $k$ 的反进制表上第 $n$ 个数的值

Samples

input
3 8 1 8 8 8 9
output
2 9 22
input
3 2 1 2 2 2 3
output
8 9 88
input
3 8 10 8 16 8 17
output
23 29 32

Hint

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