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;
    }

  • 相关阅读:
    Spring>autoWire
    hibernate>多对多关联映射
    Hibernate>一级缓存
    Hibernate>component映射和复合主键映射
    Struts2>类型转换
    hibernate>继承
    hibernate>悲观锁和乐观锁
    Spring>Bean的作用域
    Struts2>defaultactionref
    数据库的隔离级别
  • 原文地址:https://www.cnblogs.com/crazyapple/p/2999508.html
Copyright © 2011-2022 走看看