9302 - Code(密码锁)
KEY Inc.是安全硬件的领先公司,开发了一种新型保险箱。要解锁它,您不需要钥匙,但您需要在键盘上输入正确的n位代码(就好像这是新事物一样!有几种型号可供选择,从儿童玩具保险箱(带有2位代码)到军用版本(带有6位代码)。
输入正确代码的最后一位数字后,保险箱将立即打开。没有“Enter”键。当您输入超过n位数字时,只有最后n位数字是有效的。例如(在 4位版本中),如果正确的代码是4567,并且您打算输入数字序列1234567890,则只要按7个键,门就会打开。
创建这种效果的软件相当简单。在 n 位版本中,保险箱始终处于 10^(n-1) 内部状态之一。保险箱的当前状态仅表示已输入的最后 n-1 位数字。其中一个状态(在上面的示例中为状态 456)被标记为解锁状态。如果保险箱处于解锁状态,然后按下右键(在上面的示例中为 7),则门打开。否则,保险箱将切换到相应的新状态。例如,如果保险箱处于状态 456,然后按 8,则保险箱将进入状态 568。
打开保险箱的一个微不足道的策略是依次输入所有可能的代码。然而,在最坏的情况下,这将需要 n * 10^n 次击键。通过选择一个好的数字序列,最多可以在 10^n + n - 1 次击键中打开保险箱。您所要做的就是找到一个包含所有 n 位序列的数字序列。KEY Inc. 声称,对于军用版本(n=6),当今最快的计算机需要数十亿年才能找到这样的序列——但显然他们不知道一些程序员的能力......
输入
输入包含多个测试用例。每个测试用例都由整数 n 指定。您可以假设 1<=n<=6。最后一个测试用例后面跟着一个零。
输出
对于 n 指定的每个测试用例,输出一行,其中包含 10^n + n - 1 位数字的序列,该序列恰好包含每个 n 位序列一次。
样例
输入
1 2 0
输出
0123456789 00102030405060708091121314151617181922324252627282933435363738394454647484955657585966768697787988990
来源
其它比赛