zoukankan      html  css  js  c++  java
  • hdu 1210 Eddy's 洗牌问题

    hdu 1210 Eddy's 洗牌问题

    Problem DescriptionEddy是个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 Input201Sample Output202

    //这题主要对其中一个元素进行跟踪,如果他移到了原点,就说明已经还原
    #include<iostream>
    using namespace std;
    int main()
    {
     int n,p,num;
     while(cin>>n)
     {
      p=1;
      num=0;
      while(1)
      {
       if(p<=n)
        p=2*p;   //如果是前一半 那么乘以二就是它下一个位置
       else
        p=2*(p-n)-1;   //如果是后一半
       num++;
       if(p==1)    //如果回到原点
        break;
       
      }
      cout<<num<<endl;
     }
     return 0;
    }

  • 相关阅读:
    二进制编译http
    http服务
    FTP服务
    DAY01
    直流电机调速作业
    机械大楼电梯控制项目
    仿真作业
    第六周作业
    第五周作业
    第四周仿真作业
  • 原文地址:https://www.cnblogs.com/crazyapple/p/2999508.html
Copyright © 2011-2022 走看看