HDU 4686 Arc of Dream(快速幂矩阵)
再水一发,构造啊,初始化啊。。。wa很多次啊。。
#include <cstring>
#include <cstdio>
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
#define MOD 1000000007
#define LL long long
LL mat[][],p[][];
LL a1,b1,a0,b0;
int qmod(LL n)
{
LL c[][];
int i,j,k;
LL ans = ;
while(n)
{
if(n&)
{
memset(c,,sizeof(c));
for(i = ; i < ; i ++)
{
for(j = ; j < ; j ++)
{
for(k = ; k < ; k ++)
{
c[i][j] += mat[i][k]*p[k][j];
c[i][j] %= MOD;
}
}
}
memcpy(mat,c,sizeof(mat));
}
memset(c,,sizeof(c));
for(i = ; i < ; i ++)
{
for(j = ; j < ; j ++)
{
for(k = ; k < ; k ++)
{
c[i][j] += p[i][k]*p[k][j];
c[i][j] %= MOD;
}
}
}
memcpy(p,c,sizeof(p));
n >>= ;
}
ans = ((mat[][]*a0)%MOD*b0)%MOD;
ans = (ans + (mat[][]*a1)%MOD*b1)%MOD;
ans = (ans + (a1*mat[][])%MOD)%MOD;
ans = (ans + (b1*mat[][])%MOD)%MOD;
ans = (ans + mat[][])%MOD;
return ans;
}
int main()
{
LL n,ax,ay,bx,by;
int i,j;
while(cin>>n)
{
cin>>a0>>ax>>ay;
cin>>b0>>bx>>by;
memset(p,,sizeof(p));
a0 %= MOD;
ax %= MOD;
ay %= MOD;
b0 %= MOD;
bx %= MOD;
by %= MOD;
p[][] = p[][] = ;
p[][] = (ax*bx)%MOD;
p[][] = (ax*by)%MOD;
p[][] = (ay*bx)%MOD;
p[][] = (ay*by)%MOD;
p[][] = ax;
p[][] = ay;
p[][] = bx;
p[][] = by;
p[][] = ;
for(i = ; i < ; i ++)
{
for(j = ; j < ; j ++)
mat[i][j] = i == j ? :;
}
a1 = (a0*ax + ay)%MOD;
b1 = (b0*bx + by)%MOD;
if(n == )
printf("0\n");
else
printf("%d\n",qmod(n-));
}
return ;
}
HDU 4686 Arc of Dream(快速幂矩阵)的更多相关文章
- HDU 4686 Arc of Dream(递归矩阵加速)
标题效果:你就是给你一程了两个递推公式公式,第一个让你找到n结果项目. 注意需要占用该公式的复发和再构造矩阵. Arc of Dream Time Limit: 2000/2000 MS (Java/ ...
- hdu 4686 Arc of Dream 自己推 矩阵快速幂
A.mat[0][0] = 1, A.mat[0][1] = 1, A.mat[0][2] = 0, A.mat[0][3] = 0, A.mat[0][4] = 0; A.mat[1][0] = 0 ...
- hdu 4686 Arc of Dream(矩阵快速幂)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 题意: 其中a0 = A0ai = ai-1*AX+AYb0 = B0bi = bi-1*BX+BY ...
- HDU 4686 Arc of Dream 矩阵快速幂,线性同余 难度:1
http://acm.hdu.edu.cn/showproblem.php?pid=4686 当看到n为小于64位整数的数字时,就应该有个感觉,acm范畴内这应该是道矩阵快速幂 Ai,Bi的递推式题目 ...
- hdu 4686 Arc of Dream(矩阵快速幂乘法)
Problem Description An Arc of Dream is a curve defined by following function: where a0 = A0 ai = ai- ...
- HDU 4686 Arc of Dream (矩阵快速幂)
Arc of Dream Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- HDU 4686 Arc of Dream (2013多校9 1001 题,矩阵)
Arc of Dream Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- HDU 4686 Arc of Dream(矩阵)
Arc of Dream [题目链接]Arc of Dream [题目类型]矩阵 &题解: 这题你做的复杂与否很大取决于你建的矩阵是什么样的,膜一发kuangbin大神的矩阵: 还有几个坑点: ...
- HDU 4686 Arc of Dream(矩阵)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 题意: 思路: #include <iostream>#include <cs ...
随机推荐
- C#直接赋值和反射赋值(无GC)的性能比较
using System; using System.Reflection; using System.Diagnostics; using System.Runtime.InteropService ...
- ecshop 后台时间调用
<script type="text/javascript" src="../js/calendar.php?lang={$cfg_lang}">& ...
- MEF 根据配置注入Service
有这样的场景 : 现在一个接口有很多种实现类,需要根据配置,来确定确定调用哪个具体的实现类.这样使得软件扩展性大大提高 在MEF可以通过ExportMetadata 来实现这样的效果. 1.现在我们建 ...
- CSS控制表格(table)样式
CSS控制表格样式 /* 合并边框重叠部分 */ table{border-collapse:collapse;} /* 单元格边框 */ td{border:1px solid #A7AEB1;}
- MongoDB Windows环境安装及配置
MongoDB一般安装 1.首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,目前的最新版本为2.6 安装包有zip和msi格式的,这里推荐下载zip格 ...
- SpringMVC上传文件的三种方式
直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/common ...
- double 和 float
对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位.但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言 ...
- liunx学习(一):linux下目录操作大全
Linux C函数之文件及目录函数(全):http://blog.sina.com.cn/s/blog_695e489c01013ldd.html linux目录操作发:http://www.cnbl ...
- java22
1:登录注册IO版本案例(掌握) 要求,对着写一遍. cn.itcast.pojo User cn.itcast.dao UserDao cn.itcast.dao.impl UserDaoImpl( ...
- 2014 39th ACM-ICPC 西安赛区 总结
西安,打铁. 出发前听说是大赛区,签到的时候看了秩序册的队伍情况,264支队伍. 在听说是大赛区之前,我觉得我们队应该是银首,运气好+发挥超常的话或许有金,即保银冲金. 听到大赛区之后,觉得可能金区有 ...