Javaで1バイト減らすのって難しいですね♪

2506 -- Tiling
2*n(0<=n<=250)の長方形を1*2と2*2のタイルを使って敷き詰めるとき、何パターンあるかを数える問題。
BigIntegerマンセーなので、Javaで193byte。
どうみても漸化式です。

a(0)=1
a(1)=1
a(n+2)=a(n+1)+2a(n) (n>=0)

しかし、これでは一位になれなかったので、一般解を求める手段に出る。

a(n) = floor((pow(2,n+1)+1)/3)

Discussに書いてあった通りです。これを使って書くとこんなのになる。

import java.util.*;
import java.math.*;

class Main{
  static{
    for(Scanner s=new Scanner(System.in);s==s;)
      System.out.println(new BigInteger("2").pow(s.nextInt()+1).add(BigInteger.ONE).divide(new BigInteger("3")));
  }
}

つっこみどころが多すぎるのだけど、Scanner#nextInt()で例外が発生するまで無限ループという手はこの問題では通用せず、Runtime Errorとなった(ushioda氏やkosakも同じことやってるんじゃないでしょーか?)。
仕方ないので、無限ループをやめた上で一位になってみた。

import java.util.*;
import java.math.*;

class Main{
  static{
    for(Scanner s=new Scanner(System.in);s.hasNext();)
      System.out.println(BigInteger.ONE.setBit(s.nextInt()+1).divide(new BigInteger("3")));
  }
}

終わり。