SRM 146 DIV2 500

問題を読む為の英単語

単語 意味
rectangular 長方形の

問題概要

入力:width, height
出力:長方形の個数

以下のような四角形が与えられる。

 __ __ __
|__|__|__|
|__|__|__|
|__|__|__|

(width:3 height:3)

与えられた四角形に存在する長方形の数を出力せよ。
ただし、正方形は除外すること。

例示

width:3 height:3
return 22

回答案

すべての長方形パターンの数を合計する。

3x3の長方形では。。。
W:入力width H:入力heightとし、例示より以下のパターンが導かれる。

width height 個数
1 2 6
1 3 3
2 1 6
2 3 2
3 1 3
3 2 2

widthとheightから個数を得る一般式
(W - width + 1) * ( H - h + 1)

回答コード(C#)

class RectangularGrid
	{
		public long countRectangles(int width, int height)
		{
			long rect_num = 0;

			for (int i = 1; i <= height; i++) {
				for (int j = 1; j <= width; j++) {
					if (i != j)
						rect_num += (width - j + 1) * (height - i + 1);
				}
			}

			return rect_num;
		}
	}