JAPLJ Contest A 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; }