結果
| 問題 | No.492 IOI数列 | 
| コンテスト | |
| ユーザー |  tinumukiti631 | 
| 提出日時 | 2017-03-11 23:42:47 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 2 ms / 1,000 ms | 
| コード長 | 658 bytes | 
| コンパイル時間 | 1,357 ms | 
| コンパイル使用メモリ | 160,420 KB | 
| 実行使用メモリ | 6,944 KB | 
| 最終ジャッジ日時 | 2024-06-24 13:49:02 | 
| 合計ジャッジ時間 | 2,156 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 19 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define Rep(i, N) for(int i = 0; i < N; i++)
const int mod = 1e9 + 7;
int getpow(int val, int p) {
  int ans = 1, i = 0;
  while(p >> i) {
    if((p >> i) & 1LL) (ans *= val) %= mod;
    (val *= val) %= mod; i++;
  }
  return ans;
}
    
int f(int n) {
  if(n == 1) return 1;
  return n % 2 ? (f(n - 1) * 100 + 1) % mod : (f(n / 2) * (getpow(100, n / 2) + 1)) % mod;
}
signed main()
{
  int N;
  int ans2 = 0;
  
  cin >> N;
  
  cout << f(N) << endl;
  N %= 11;
  if(!N) cout << 0 << endl;
  else {
    N--; cout << "1";
    Rep(i, N) cout << "01";
    cout << endl;
  }
  return 0;
}
            
            
            
        