#P9888. [ICPC2018 Qingdao R] Magic Multiplication
[ICPC2018 Qingdao R] Magic Multiplication
题目描述
BaoBao is now learning a new binary operation between two positive integers, represented by , in his magic book. The book tells him that the result of such operation is calculated by concatenating all multiple results of each digit in the two integers.
Formally speaking, let the first integer be , where indicates the -th digit in , and the second integer be , where indicates the -th digit in . We have
$$A \otimes B = \sum\limits_{i=1}^n\sum\limits_{j=1}^m a_ib_j = a_1b_1 + a_1b_2 + \dots + a_1b_m + a_2b_1 + \dots + a_nb_m $$Note that the result of is considered to be a (without leading zeros if , or contains exactly one 0
if ), NOT a normal integer. Also, the sum here means , NOT the normal addition operation.
For example, . Because , , and .
BaoBao is very smart and soon knows how to do the inverse operation of . Now he gives you the result of a operation and the numbers of digits in the two original integers. Please help him to restore the two original integers and .
输入格式
There are multiple test cases. The first line of the input contains an integer , indicating the number of test cases. For each test case:
The first line contains two positive integers and (), where indicates the length of and indicates the length of . Here length of an integer means the length of the string when writing the number in decimal notation without leading zeros.
The second line contains only one positive integer without leading zeros, indicating the result of . The length of is no more than .
It's guaranteed that the sum of lengths of over all test cases will not exceed .
输出格式
For each test case output one line.
If there exist such and that , output one line containing two integers and separated by one space. Note that and should be positive integers without leading zeros, the length of should be exactly , and the length of should be exactly .
If there are multiple valid answers, output the answer with the smallest ; If there are still more than one answer, output one of them with the smallest .
If such and do not exist, print Impossible
(without quotes) on a single line.
题目大意
BaoBao 现在正在他的魔法书中学习两个正整数之间的一种新的二进制运算,用 表示。这本书告诉他,这种运算的结果是通过将两个整数中每个数字的所有多个结果串联起来计算的。
形式上讲,让第一个整数为 ,其中 表示 中的第 位,第二个整数为 ,其中 表示 中的第一位。我们有
$$A \otimes B = \sum\limits_{i=1}^n\sum\limits_{j=1}^m a_ib_j = a_1b_1 + a_1b_2 + \dots + a_1b_m + a_2b_1 + \dots + a_nb_m $$请注意, 的结果被认为是 (如果 ,则不带前导零,或者如果 ,则仅包含一个 ),而不是正常整数。此外,这里的 sum 表示 ,而不是正常的加法运算。
例如,。因为 ,, 和 。
BaoBao 很聪明,很快就知道如何做 的逆运算。现在,他给出了 运算的结果以及两个原始整数中的位数。请帮助他恢复两个原始整数 和 。
输入格式
有多个测试用例。输入的第一行包含一个整数 ,表示测试用例的数量。对于每个测试用例:
第一行包含两个正整数 和 (),其中 表示 的长度, 表示 的长度。这里,整数的长度是指在不带前导零的十进制记数法中写入数字时字符串的长度。
第二行只包含一个不带前导零的正整数 ,表示 的结果。 的长度不超过 。
保证所有测试用例的 长度总和不会超过 。
输出格式
对于每个测试用例输出一行。
如果存在这样的 和 ,,则输出一行,其中包含由一个空格分隔的两个整数 与 。请注意, 和 应该是不带前导零的正整数, 的长度应该正好是 , 的长度应正好是 。
如果存在多个有效答案,则输出具有最小 的答案;如果仍然有一个以上的答案,请输出其中一个最小的 。
如果不存在这样的 和 ,请在单行上打印 Impossible
(不带引号)。
4
2 2
8101215
3 4
100000001000
2 2
80101215
3 4
1000000010000
23 45
101 1000
Impossible
Impossible