矩形A + B
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4262 Accepted Submission(s): 3294
2 1 2 2 4
3 30
/*题解:
找规律问题
*/
如图是一个3X4网格:
看第一行:格数为1的有4-1+1=4个。
在上述条件下,相对于格数为1关联的列有:
高为1的有3-1+1=3个,则表格中长为1且高为1的共3X4=12。
高为2的有3-2+1=2个,则表格中长为1且高为2的共2X4=8。
高为3的有3-3+1=1个,则表格中长为1且高为3的共1X4=4。
同理看第一行表格为2的有4-2+1=3个。
在上述条件下,相对于格数为2关联的列有:
高为1的有3-1+1=3个,则表格中长为2且高为1的共3X3=9。
高为2的有3-2+1=2个,则表格中长为1且高为2的共2X3=6。
高为3的有3-3+1=1个,则表格中长为1且高为3的共1X3=3。
同理看第一行表格为3的有4-3+1=2个。
在上述条件下,相对于格数为3关联的列有:
高为1的有3-1+1=3个,则表格中长为1且高为1的共3X2=6。
高为2的有3-2+1=2个,则表格中长为1且高为2的共2X2=4。
高为3的有3-3+1=1个,则表格中长为1且高为3的共1X2=2。
*******
将这些矩形全部相加即是网格中矩形总数。
具体代码:
#include<cstdio> int main() { int t,n,m,s,i,j,a,b; scanf("%d",&t); while(t--) { scanf("%d %d",&n,&m); for(i=1,s=0; i<=n; i++) { for(j=1; j<=m; j++) { a=n-i+1; b=m-j+1; s += a*b; } } printf("%d\n",s); } return 0; }