洛谷 统计方形
题目背景
1997年普及组第一题
题目描述
有一个n×m方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。
输入格式
一行,两个正整数 n,mn,m(n \leq 5000,m \leq 5000n≤5000,m≤5000)。
输出格式
一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。
输入输出样例
输入
2 3
输出
8 10
解题思路
思路描述
简单进行暴力求解,求解每个网格为右下角的长方形和正方形的个数,累计求和即可。
代码描述
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StreamTokenizer st=new StreamTokenizer(br);
PrintWriter pr=new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
st.nextToken();
int n=(int)st.nval;
st.nextToken();
int m=(int)st.nval;
//查表
long resS=0l;
long resT=0l;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
//求正方形的个数
resS+=Math.min(i, j);
//求长方形的个数
resT+=fun(i,j);
}
}
pr.print(resS+" "+resT);
pr.flush();
return;
}
static long fun(int x,int y) {
int x1=Math.max(x, y);
int y1=Math.min(x, y);
return y1*x1-y1;
}
}