矩形的个数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形。
给出A,B,计算可以从中找到多少个矩形。
-
输入
-
本题有多组输入数据(<10000),你必须处理到EOF为止
输入2个整数A,B(1<=A,B<=1000)
输出
-
输出找到的矩形数。
样例输入
-
1 2 3 2
样例输出
-
3 18
-
就知道有公式可惜没推出来。。。 找规律做的
-
长\宽 1 2 3 4 5 1 1 3 6 10 15 2 3 9 18 30 45 3 6 18 36 ... ... 4 10 30 ... ... ... 5 15 ... ... ... ... -
规律已出打表即可。。。
-
#include <cstdio> #include <cstring> #define LL long long #define MAX 1000+1 using namespace std; LL dp[MAX][MAX]; void getdp() { int i, j; for(i = 1; i < MAX; i++) { for(j = 1; j < MAX; j++) { if(i == 1) dp[i][j] = (j + 1 ) * j / 2; else dp[i][j] = dp[i-1][j] + dp[1][j] * i; } } } int main() { int a, b; getdp(); while(scanf("%d%d", &a, &b) != EOF) { printf("%lld\n", dp[a][b]); } return 0; }
-
最优代码:有公式 (a+1) * a * (b+1) *b / 4
-
#include <stdio.h> main() { float a,b; while(scanf("%f%f",&a,&b)+1) printf("%.0f\n",(a+1)*a*(b+1)*b/4); }
-
本题有多组输入数据(<10000),你必须处理到EOF为止