YT14-HDU-洗牌的规律

来源:互联网 发布:斜面小车 能测几组数据 编辑:程序博客网 时间:2024/05/07 15:15

Problem Description

Eddy是个ACMer,他不仅喜欢做ACM题,而且对于纸牌也有一定的研究,他在无聊时研究发现,如果他有2N张牌,编号为1,2,3..n,n+1,..2n。这也是最初的牌的顺序。通过一次洗牌可以把牌的序列变为n+1,1,n+2,2,n+3,3,n+4,4..2n,n。那么可以证明,对于任意自然数N,都可以在经过M次洗牌后第一次重新得到初始的顺序。编程对于小于100000的自然数N,求出M的值。

Input

每行一个整数N

Output

输出与之对应的M

Sample Input

201

Sample Output

202


代码如下:

#include <iostream>using namespace std;int main(){    int n;    int c = 1;    int m;    while (cin>>n)    {          m = 1;          while(1)          {                  if (c <= n)                  {                        c = 2 * c;                  }                  else                   {                       c = (c - n) * 2 - 1;                  }                  if ( c == 1) break;                  m++;          }          cout<<m<<endl;    }    return 0;}




1 0
原创粉丝点击