AOJ0057 The Number of Area

問題リンク The Number of Area

  • 解法

ノートに直線を引いて分割してみます。すると、法則が見えてきます。
既に直線がn本あるとき、n+1本目の直線を適切に引くと新たに面はn+1個増えます。
なので
dp[i] : 直線がi本あるときの面の数
dp[i] = dp[i-1] + i
というDPで解けます。

  • ソース
import java.util.Scanner;

//The Number of Area
public class AOJ0057 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a[] = new int[10001];
		a[0] = 1;
		for(int i=1;i<10001;i++)a[i]=a[i-1]+i;
		while(sc.hasNext())System.out.println(a[sc.nextInt()]);
	}
}