JAPLJ Contest A Anemone

Anemone

1型のグラフはこんな感じ ∧
2型は ∧∧
3型は ∧∧∧∧
n型のアネモネの成長度のグラフは2n-1個の山を持つ。k=1となるのは2n-1回、0<k<1となるのは2n回、k=0となるのは2n-1回。ここまでで、30点。p=0が入力された場合には1より大きい任意の値をkとする。

#include <iostream>
using namespace std;

int main()
{
    int p;  cin >> p;

    if ( p == 0 ) { cout<<"1 2.0"<<endl; return 0; }

    for ( int n=1; n<60; n++ )
    {
        if ( p == (1ll<<(n-1))   ) { cout<<n<<" 1.0"<<endl; return 0; }
        if ( p == (1ll<<n    )   ) { cout<<n<<" 0.5"<<endl; return 0; }
        if ( p == (1ll<<(n-1))+1 ) { cout<<n<<" 0.0"<<endl; return 0; }
    }

    cout << "-1" << endl;
}