TopCoder SRM 377 Div1 Easy SquaresInsideLattice

問題

(0,0)から(width,height)の格子点を結んでできる正方形はいくつあるか。
辺が軸に平行である必要はない。

制約条件

width,height≦10^5

方針

一辺の長さがLの軸に平行な正方形にぴったり内接する(軸が平行とは限らない)正方形は、
L個ある。
これが、平行移動の仕方が(width-L+1)*(height-L+1)通りある。


これをL=1〜min(width,height)まで足し合わせればよい。

ソースコード

class SquaresInsideLattice {
  public:
  long long howMany(int width, int height) {
    ll ans=0;
    for(int i=1;i<=min(width,height);i++)
      ans+=(ll)i*(width-i+1)*(height-i+1);
    return ans;
  }
};