本文主要是介绍暴力枚举--统计方形(数据加强版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目背景
1997年普及组第一题
题目描述
有一个 n×m 方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。
输入格式
一行,两个正整数 n,m(n≤5000,m≤5000)。
输出格式
一行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。
输入输出样例
输入 #1复制
2 3
输出 #1复制
8 10
import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();long count_z = 0,count_c = 0;for(int i = 0;i < n;i++) {for(int j = 0;j < m;j++) {if(i == j) count_z += (n - i)*(m - j);else count_c += (n - i)*(m - j);}}System.out.print(count_z + " " + count_c);}
}
题解分析:(n - i)*(m - j)//这里解释一下是什么意思:假如i为1,j为0,那么n - 1,就是将相邻方格两个方格看作一组,那么横向从左到右有n - 1组,j - 0即列方向上还是有m个方格,那么此时n*m个方格中有(n-1)*j 个2*1 的方格组。以此类推,通过i和j的不断变化实现方格组的变化,并且当i = j时,方格组是正方形。
这篇关于暴力枚举--统计方形(数据加强版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!