題目連結: https://tioj.ck.tp.edu.tw/problems/1015
# 內容
由單位格子整齊排列而成的矩形裡面,總共有多少個正方形?
# 思路
1 × 1 的正方形有 N × M 個、
2 × 2 的正方形有 (N - 1) × (M - 1) 個、
3 × 3 的正方形有 (N - 2) × (M - 2) 個、
……
i × i 的正方形有 (N - i + 1) × (M - i + 1) 個、
……
N × N 的正方形有 M - N + 1 個
因此 Σ (N - i + 1) × (M - i + 1) ,其中 1 ≦ i ≦ N 。
=> Σ N × M + N + M + 1 - i × (N + M + 2)+ i ^ 2
=> (N + 1) × (M + 1) - (N × (N + 1) ÷ 2) × (N + M + 2)+ N * (N + 1) × (2 × N + 1) ÷ 6
=> N × (N + 1) × (3M - N + 1) ÷ 6 其中,N ≦ M
# 程式碼
#include <bits/stdc++.h> | |
using namespace std; | |
#define ll long long | |
int main(){ios::sync_with_stdio(false);cin.tie(0); | |
ll n,m; | |
while(cin>>n>>m&&n+m){ | |
if(n>m) swap(n,m); | |
ll square = n*(n+1)*(3*m-n+1)/6; | |
cout<<square<<"\n"; | |
} | |
} |