hdu 1210

2807 ワード

この问题は厳密に言えば私はできませんが、最初の反応は直接最初の数がどのように変化しているかを见て、それから私は小さな関数を打って、打った后に提出して试験を続けて规则を探すつもりで、结果は见ると意外にも直接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
", getM(N)); } return 0; }