hdu 1210 Eddy's 洗牌问题

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

20
1

Sample Output

20
2

//选定一个位置,什么时候这个位置的数回到原来的数了,break;

//比如 选定1号位,就看经过几次变换,1号位又变成1了

#include <iostream>

using namespace std;

int main()
{
    int n,ans,i;
    while(cin>>n)
    {
        ans=1;
        i=2;
        while(i!=1)
        {
            if(i<=n)
            i=2*i;
            else
            i=(i-n)*2-1;
            ans++;
        }
        cout<<ans<<endl;
    }
    return 0;
}

hdu 1210 Eddy's 洗牌问题

时间: 2025-01-07 23:04:21

hdu 1210 Eddy's 洗牌问题的相关文章

hdoj 1210 Eddy&#39;s 洗牌问题 【模拟】

题意:中文题,不翻译.. 策略:观察可知,第i张牌 如果小于等于n 那么他的序号就会变为i*2, 如果大于n 那么就会变成(i-n)*2-1  故 只需要模拟下就好了 AC by SWS 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1210 代码: #include<stdio.h> int main() { int n, cur, pre; while(scanf("%d", &n) == 1){ int ans

HDUJ 1210 Eddy&#39;s 洗牌问题

Eddy's 洗牌问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3232    Accepted Submission(s): 2159 Problem Description Eddy是个ACMer,他不仅喜欢做ACM题,而且对于纸牌也有一定的研究,他在无聊时研究发现,如果他有2N张牌,编号为1,2,3..n,n+1,..2n

杭电acm 1210 Eddy&#39;s 洗牌问题

Eddy's 洗牌问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5504    Accepted Submission(s): 3597Problem Description Eddy是个ACMer,他不仅喜欢做ACM题,而且对于纸牌也有一定的研究,他在无聊时研究发现,如果他有2N张牌,编号为1,2,3..n,n+1,..2n.这

HDU1210 Eddy&#39;s 洗牌问题【规律】

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1210 题目大意: 有2*N张牌,初始序列为1.2.3.-.N.N+1.-.2*N-1.2*N.通过一次洗牌可将 牌洗为N+1.1.N+2.2.N+3.3.N+4.4.-.N+N.N.按新的牌序列这样循环 洗牌,最终可将牌洗成初始序列.那么问题来了:给你整数N,问经过多少次可以将牌洗 为初始序列. 考虑当N = 5的时候, 初始序列为: 1  2  3  4  5  6  7  8  9  10 一

杭电ACM1210——Eddy&#39;s 洗牌问题~~找规律。

例如:n = 3 一开始,序列为1 2 3 | 4 5 6 然后序列为        4 1 5 | 2 6 3 接着为                2 4 6 | 1 3 5 最后为                1 2 3 | 4 5 6 所以m = 3. 找出规律就可以解决了,只需要第一个数,也就是1的位置重新回到位置1,那整个数列就变回开始的序列了. 1的位置 i 小于等于n时,下一个位置是 2 * i :i 大于 n 时,下一个位置是 2 * (i - n)- 1. 下面是AC的代码

洗牌问题(找规律)

Eddy's 洗牌问题 点我 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 Out

[转]完美洗牌(Perfect Shuffle)问题

[转]原博文地址:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/02.09.md 完美洗牌算法 题目详情 有个长度为2n的数组{a1,a2,a3,...,an,b1,b2,b3,...,bn},希望排序后{a1,b1,a2,b2,....,an,bn},请考虑有无时间复杂度o(n),空间复杂度0(1)的解法. 题目来源:此题是去年2013年UC的校招笔试题,看似简单,按照题目所要

HDU 1163 Eddy&#39;s digital Roots

Eddy's digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5783    Accepted Submission(s): 3180 Problem Description The digital root of a positive integer is found by summing the digit

杭电 HDU 1164 Eddy&#39;s research I

Eddy's research I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7117    Accepted Submission(s): 4268 Problem Description Eddy's interest is very extensive, recently  he is interested in prime