南阳题目206-矩形的个数
2016-03-30 19:53
225 查看
矩形的个数
时间限制: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
来源
这个题要找到计算的公式就可以了,看了好多博客都是直接给的公式,这里我来详细解释一下
m*n
A | B | ||
C | |||
D | |||
E | |||
取矩形的一个顶点在A(取每格的字母代表此格的左上角定点),则其要构成的矩形对角的另一个定点必须在除了A所在行和所在列的其他任意顶点 一共有(n-1)个
.
.
.
一直取到第一行的最后一个格子的左上角一共有(1+2+3+。。。n)个矩形
然后重复第二行的B,C,D,E一直到m都和第一行的情况相同,共有(1+2+3+......m)
所以总共的个数就是(1+2+3+4+。。。+m)*(1+2+3+4+。。。n)
得出公式 总个数为m*n*(m+1)*(n+1)/4
但是注意数据很大,要用long long型(__int64不支持,wa了一遍)
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { long long a,b,c,d,m,n,i; while(scanf("%lld%lld",&m,&n)!=EOF) { printf("%lld\n",m*n*(m+1)*(n+1)/4); } return 0; }
相关文章推荐
- css3 字体旋转
- [linux basic基础]----套接字
- [置顶] 视频转gif图片格式-好用的软件
- LevelDb
- java之awt防抖
- LevelDb
- 设计模式:模板方法模式(Template Method)
- java关键字final,finally,finalize
- 27.二重指针和二维数组
- 设计模式:模板方法模式(Template Method)
- 第二次作业
- 复利计算单元测试
- 使用系统框架进行的二维码扫描
- SNMP OID列表 监控需要用到的OID
- 从Long.ValueOf("String")与Long.parseLong("String")看JAVA包装类的封箱与拆箱
- 解析加密后的js
- Linux 第六周实验
- 用javac编译带包的Java文件
- iOS程序的Build过程
- delphi 对抗任务管理器关闭(提升进程到Debug模式,然后设置进程信息SE_PROC_INFO)