#774. [CZOI2013 C] 取数问题

[CZOI2013 C] 取数问题

题目描述

任给出正整数 nnkk,然后按下列的规则取数。取数规则为从 11 开始取,每次取的数为上一次取的数乘 22,不够取时加上 kk 再从 11 开始取,直到取完为止。

输入格式

一行,包含两个用空格隔开的正整数 nnkk

输出格式

仅有一行,若正好能够取完,则输出总共取了多少次数;若永远不能取完时,输出 can't finish!。注意 finish 之后有感叹号,样例 22 为永远不能取完的情况。

16 4
11
36557 32991
can't finish!

样例 11 解释

  • 第一次取数 11,取数后的余数为 161=1516-1=15
  • 第二次取数 22,取数后的余数为 152=1315-2=13
  • 第三次取数 44,取数后的余数为 134=913-4=9
  • 第四次取数 88,取数后的余数为 98=19-8=1

当第五次取数时,因余数为 11,不够取,此时作如下处理:余数 1+k=51+k=5,再从 11 开始取

  • 第五次取数 11,取数后的余数为 51=45-1=4
  • 第六次取数 22,取数后的余数为 42=24-2=2

当第七次取数时,因余数为 22,不够取,此时作如下处理:余数 2+k=62+k=6,再从 11 开始取

  • 第七次取数 11,取数后的余数为 61=56-1=5
  • 第八次取数 22,取数后的余数为 52=35-2=3

当第九次取数时,因余数为 33,不够取,此时作如下处理:余数 3+k=73+k=7,再从 11 开始取

  • 第九次取数 11,取数后的余数为 71=67-1=6
  • 第十次取数 22,取数后的余数为 62=46-2=4
  • 第十一次取数 44,取数后的余数为 44=04-4=0,正好取完

由此可见,当 n=16,k=4n=16,k=4 时,按上述方法 1111 次取完。

数据范围

30%30\% 的数据,1KN1031\le K\le N\le10^3

60%60\% 的数据,1KN1051\le K\le N\le10^5

100%100\% 的数据,1KN1071\le K\le N\le10^7