寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

AtCoder Problems in C++ #poster - JOIポスター (JOI Poster)

2010年 日本情報オリンピック春合宿OJから、その提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
競技プログラミング」を略して、「競プロ」などと呼ばれています。

#poster - JOIポスター (JOI Poster)

https://www.ioi-jp.org/camp/2010/2010-sp-tasks/2010-sp-day1_20.pdf

僕が作成、提出したコードは、以下のとおりです。

/*
AtCoder Problems in C++
#poster - JOIポスター (JOI Poster)
https://www.ioi-jp.org/camp/2010/2010-sp-tasks/2010-sp-day1_20.pdf
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
string f(ll n,ll k){
  if(n==0){
    return "J";
  }
  if((1<<n)/2<k){
    string s="";
    for(int i=0;i<(1<<n)/2;i++){
      s+="I";
    }
    return s+(f(n-1,k-(1<<(n-1))));
  }else{
    string s="";
    for(int i=0;i<(1<<(n-1));i++){
      s+="J";
    }
    for(int i=0;i<(1<<(n-1));i++){
      s+="O";
    }
    return s;
  }
}
int main(void){
  ll n,k;
  cin>>n>>k;
  cout<<f(n,k)<<endl;
  return 0;
}