题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1210
题目思路很简单,只要保证1在第一个位置的时候就说明牌的顺序达到要求,输出M就可以了。
代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int main(){ int n; while(scanf("%d",&n)!=EOF){ int i=2; int sum=1; while(i!=1){ if(i>n){ i=(i-n)*2-1; }else{ i=i*2; } sum++; } printf("%d\n",sum); } return 0; }