关于数学问题的程序解决,找出推导式及西大OJ_14解答

以后类似的这种数学公式的题目,一般的想法是循环,把所有情况列举出来,但是这样子会超过运行时间,即Time Limit Exceeded

那么就要想,应该是有简便的算法

所以要注意先是不是可以能进行公式推导!!!!!!


题目:(http://oj.gxu.edu.cn/problem/14/)

小西想在一个n*m的矩形中数出有多少个子矩形。

子矩形即为边长a*b且0<an0<bm

例如在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个子矩形。

你能帮帮小西吗?


解题思路:

1、循环两层,但是时间超过了

2、那就要进行数学公式的推导

矩形就是在长n中取两个点成小矩形的长,然后在宽m中取两个点成小矩形的宽。

注意的是,长n共有n+1个点,宽m共有m+1个点

所以就是:


还有一点,该题要注意的,就是n,m的最大为1000,那么1000的四次方早就超过int的范围(32位)

所以这里的n,m,f(n,m)都是需要用long long int型的

#include<stdio.h>
int main()
{
	long long int n,m;
	while(~scanf("%lld %lld",&n,&m))
	{
	
		long long int count = 0;
		count = n*m*(n+1)*(m+1)/4;   
		//数据很大,1000的4次方超过int的范围了,所以都要用long long int 
		
		printf("%lld\n",count); 
	}
	return 0;
}

文件夹 PATH 列表 卷序列号为 0000002C 486B:877C C:. │ tree.txt │ 说明.txt │ ├─01第1章 │ book1_1.xls │ data.mat │ data1_1.txt │ eti1_5.lg4 │ eti1_6.lg4 │ eti1_7.lg4 │ eti1_8_1.m │ eti1_8_2.m │ eti1_8_3.m │ eti1_8_4.lg4 │ eti_1_9.lg4 │ ex.txt │ ti1_1_1.m │ ti1_1_2.lg4 │ ti1_2_1.m │ ti1_2_2.lg4 │ ti1_3_1.lg4 │ ti1_3_2.lg4 │ ti1_4_1.m │ ti1_4_2.lg4 │ ├─02第2章 │ data2_1.txt │ data2_2.txt │ eti2_5_1.m │ eti2_5_2.lg4 │ eti2_6_1.m │ eti2_6_2.lg4 │ fen.txt │ gai.txt │ shuchu.txt │ sj.txt │ ti2_2.lg4 │ ti2_3.lg4 │ ti2_4_1.m │ ti2_4_2.lg4 │ ti2_4_3.lg4 │ ti2_4_4.m │ ti2_4_5.m │ ti2_4_6.lg4 │ ├─03第3章 │ eti3_5.lg4 │ eti3_6_1.m │ eti3_6_2.lg4 │ eti3_6_3.lg4 │ eti3_7_1.m │ eti3_7_2.lg4 │ ex37.txt │ fun3_2.m │ fun3_3.m │ fun3_4.m │ fun3_5.m │ ti3_1.lg4 │ ti3_1.m │ ti3_2.m │ ti3_3.m │ ti3_4_1.m │ ti3_4_2.lg4 │ ├─04第4章 │ eti4_10.m │ eti4_11.m │ eti4_12_1.m │ eti4_12_2.lg4 │ eti4_13.m │ eti4_14.m │ eti4_15.m │ eti4_16.m │ eti4_17.m │ ti4_1.m │ ti4_2.m │ ti4_3.m │ ti4_4.m │ ti4_5_1.lg4 │ ti4_5_2.lg4 │ ti4_6_1.m │ ti4_6_2.lg4 │ ti4_7_1.lg4 │ ti4_7_2.lg4 │ ti4_7_3.lg4 │ ti4_8.m │ ti4_9.lg4 │ txt41.txt │ ├─05第5章 │ data51.txt │ data53.txt │ data54.txt │ eti5_5.m │ eti5_6.m │ eti5_7_1.m │ eti5_7_2.m │ eti5_8.m │ ti5_1.m │ ti5_2.m │ ti5_3.m │ ti5_4.m │ ├─06第6章 │ eti6_10.m │ eti6_11.m │ eti6_12.m │ eti6_7_1.m │ eti6_7_2.m │ eti6_8_1.m │ eti6_8_2.m │ eti6_9.m │ ti6_1_1.m │ ti6_1_2.m │ ti6_2.m │ ti6_5_1.m │ ti6_5_2.m │ ti6_6.m │ ├─07第7章 │ ti7_1.m │ ti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值