洛谷 P2241 统计方形(数据加强版)
题目描述
有一个 n×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。
输入格式
一行,两个正整数 n,mn,m(n≤5000,m≤5000)。
输出格式
一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。
找正方形:按边数找,边长为1的找出来,再找边长为2的,最后加起来。
找矩形也一样,找找规律。
注意算法,容易时间超限。
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
ff(n,m);
}
public static void ff(int n,int m){
long zheng=0l;
long cheng=0l;
for(int i=1;i<=n;i++){
if(i<=m)
zheng+=(n+1-i)*(m+1-i);
for(int j=1;j<=m;j++){
if(i==j)
continue;
else cheng+=(n+1-i)*(m+1-j);
}
}
System.out.println(zheng+" "+cheng);
}
}