题目意思:
给一个十进制数s和整数n,定义bij=s[i]*s[j].求矩阵b中,共有多少个子矩形,满足矩形内部所有元素之和为n.
解题思路:
发觉矩形的特点:如果每一行都提取一个列标和,实际上就是矩形的行标和*列标和。假设矩形的左上角为(a,b),右下角为(x,y),则矩形的内部和为sum(va(a~x)*sum(va(b~y).
sum[i]表示连续和为i的个数。
dp[i]表示小标从1~i的数值和。
Tip:不能蛮搞,积极分析问题的特点啊。
代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include