ACM基础题 - 求矩形个数
Posted bcbobo21cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM基础题 - 求矩形个数相关的知识,希望对你有一定的参考价值。
描述
在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形。
给出A,B,计算可以从中找到多少个矩形。
输入
输入2个整数A,B(1<=A,B<=1000)
输出
输出找到的矩形数。
样例输入
1 2
3 2
样例输出
3
18
公式是:a*(a+1)*b*(b+1)/4;
4*(4+1)*5*(5+1)/4 = 150
2*(2+1)*2*(2+1)/4 = 9
#include <stdio.h>
#include <stdlib.h>
int main()
int a,b,i,t;
while(scanf("%d%d",&a,&b)!=EOF)
long long m=0,c=0; //a=1,b=2
for(t=1;t<=b;t++) //a是行,b是列
m+=t; // m=3
for(i=1;i<=a;i++)
c+=m*i; //c=c+m*i c=3
printf("%lld\\n",c);
return 0;
MFC实现;对话框工程;VS2012;
void CjxgsDlg::OnBnClickedButton1()
// TODO: 在此添加控件通知处理程序代码
CString str1, str2;
int a,b,i,t;
long long m=0,c=0;
GetDlgItem(IDC_EDIT1)->GetWindowTextW(str1);
CStringArray* result = DivString(str1);
str2 = result->GetAt(0);
a = _ttoi(str2);
str2 = result->GetAt(1);
b = _ttoi(str2);
for(t=1;t<=b;t++) //a是行,b是列
m+=t;
for(i=1;i<=a;i++)
c+=m*i; //c=c+m*i c=3
str2.Format(_T("%d"),c);
SetDlgItemText(IDC_EDIT2,str2);
CStringArray* DivString(CString test)
CStringArray* m_result = new CStringArray;
while(TRUE)
int index = test.Find(_T(","));
if(index == -1)
m_result->Add(test);
return m_result;
CString test1 = test.Left(index);
m_result->Add(test1);
test = test.Right(test.GetLength()-index-1);
CStringArray* DivString(CString ); 这句函数声明加到对话框CPP文件的头部;这函数是按逗号切分字符串;
CStringArray* DivString(CString test) 非对话框类的成员函数,先在头部声明;
以上是关于ACM基础题 - 求矩形个数的主要内容,如果未能解决你的问题,请参考以下文章
House Building---hdu5538(求表面积水题)