http://www.caiyiwen.tech/article/19.html
- D - Defining Labels
- 这一题是一个典型的进制转换题,但是如果不知如何转换,则可能做不出来。
- 首先,我们来看一组对应:
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 00, 01, 02, 03, ……, 99, 000, 001, 002, ……
- 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 12, 13, 14, ……,110,111, 112, 113, ……
- 可以看出10->9,其他的1->0, 2->1, 3->2, ……
- 只要编号中不出现9这个数,那么实际值就是原始十进制的一一对应。
- 假设一个k位的编号为d(k)d(k-1)……d(2)d(1)d(0),那么它的对应的原始十进制值应该是——(d(k)+1)*10k+(d(k-1)+1)*10k-1+……+(d(2)+1)*10²+(d(1)+1)*10+(d(0)+1)
- 逆过来就可得解题思路:将原始十进制进行数位数字提取,提取每一位时,要将此数-1再进行操作。
代码:
#include<cstdio>