【JZOJ4819】算循环
2016-10-15 15:03
239 查看
Description
给出一个n×m的矩阵,矩阵中每个格子的面积为1,求所有子矩阵的面积和。Data Constraint
Solution
对于80分,我们可以发现一个公式:ans=∑ni=1i(i+1)2⋅∑mi=1i(i+1)2
那么,我们现在要求1×2+2×3+⋯+n(n+1)。
显然i(i+1)=i2+i,那么上式就变成了:
∑i=1ni2+∑i=1ni=n(n+1)(2n+1)6+n(n+1)2。
然后就是O(1)算法了。
Code
#include<iostream> #include<cstdio> #include<cstdlib> #define fo(i,j,k) for(int i=j;i<=k;i++) #define fd(i,j,k) for(int i=j;i>=k;i--) #define mo 1000000007 #define ll long long using namespace std; ll pow(ll m,int n) { ll b=1; while(n) { if(n%2) b=b*m%mo; n/=2; m=m*m%mo; } return b; } int main() { freopen("loop.in","r",stdin); freopen("loop.out","w",stdout); ll n,m; cin>>n>>m; n%=mo; m%=mo; ll t1=(n*(n+1)%mo*(2*n+1)%mo*pow(6,mo-2)+n*(n+1)%mo*pow(2,mo-2))%mo; ll t2=(m*(m+1)%mo*(2*m+1)%mo*pow(6,mo-2)+m*(m+1)%mo*pow(2,mo-2))%mo; ll ans=t1*t2%mo*pow(4,mo-2)%mo; cout<<ans; }
相关文章推荐
- JZOJ 4819. 【NOIP2016提高A组模拟10.15】算循环
- 【JZOJ4819】【NOIP2016提高A组模拟10.15】算循环
- JZOJ 4819 【NOIP2016提高A组模拟10.15】算循环
- jzoj4819 算循环
- 使用$i循环控制读取出来的数据库条数
- 循环查询 树形结构
- 循环-17. 简单计算器(20)
- Intel Threading Building Blocks 编程指南:简单循环的并行化
- iOSDay03C语言循环结构
- Python numpy 矩阵特殊加、乘法与循环优化
- php循环练习
- JZOJ 5068.树
- ocrale:循环插入数据
- AutoCAD LISP循环判断语句绘制多个圆内接正多边形
- hdu 1358(Period)next数组的运用 计算前i个字符的循环周期 /poj 2406 计算字符串的周期
- 12、实例 循环使用样式
- 我的Cocos2d-x学习笔记(九)游戏帧循环(游戏主循环)
- 解析XML的 循环节点
- 循环往list中放对象却总是一个对象的问题