这题严格来说我不会,不过看完题第一反应就是直接看第一个数是如何变化的,然后我就打了个小函数,打完以后交上去准备继续测试找规律,结果一看居然直接就AC了。。。太假了。。
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> using namespace std; int getM(int N) { int i = 1; int ret = 1; while(i != N + 1) { ret++; if(i <= N) { i = i * 2; }else { i = 2 * (i - N - 1) + 1; } } return ret; } int main() { #ifndef ONLINE_JUDGE freopen("data.in", "r", stdin); #endif int N; while(scanf("%d", &N) == 1) { printf("%d\n", getM(N)); } return 0; }