构造矩阵如下:
Ai*bi AX*BX AX*BY AY*BX AY*BY 0 a(i-1)*b(i-1)
Ai 0 AX 0 AY 0 a(i-1)
Bi 0 0 BX BY 0 b(i-1)
1 0 0 0 1 0 1
Sum(i) AX*BX AX*BY AY*BX AY*BY 1 sum(i-1)
Sum(i) 表示i项和,sum(i)=sum(i-1)+ai*bi;
求第n次的结果,直接对矩阵作n-1次,利用矩阵快速幂,时间复杂度为10*logn~logn
注意取模爆范围和对n=0特判。


#include <stdio.h>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
typedef unsigned long long ll;
int mod=1000000007;
ll tmp[5][5],a[5][5],b[5][5];
void mul(ll a[][5],ll b[][5])
{
for(int i=0; i<5; i++)
for(int j=0; j<5; j++)
{
tmp[i][j]=0;
for(int k=0; k<5; k++)
{
tmp[i][j]+=(a[i][k]%mod)*(b[k][j]%mod);
tmp[i][j]%=mod;
}
}
memcpy(a,tmp,sizeof(tmp));
}
void pow(ll a[][5],ll b[][5],ll n)
{
memset(a,0,sizeof(a));
for(int i=0; i<5; i++) a[i][i]=1;
while(n)
{
if(n&1) mul(a,b);
mul(b,b);
n>>=1;
}
}
int main()
{
ll a0,ax,ay,b0,bx,by;
ll k;
while(scanf("%I64u",&k)==1)
{
memset(b,0,sizeof(b));
memset(a,0,sizeof(a));
scanf("%I64u%I64u%I64u%I64u%I64u%I64u",&a0,&ax,&ay,&b0,&bx,&by);
if(k==0)
{
printf("0\n");
continue;
}
b[0][0]=((ax%mod)*(bx%mod))%mod;
b[0][1]=((ax%mod)*(by%mod))%mod;
b[0][2]=((ay%mod)*(bx%mod))%mod;
b[0][3]=((ay%mod)*(by%mod))%mod;
b[3][3]=1;
b[1][1]=ax%mod;
b[1][3]=ay%mod;
b[2][2]=bx%mod;
b[2][3]=by%mod;
b[4][0]=((ax%mod)*(bx%mod))%mod;
b[4][1]=((ax%mod)*(by%mod))%mod;
b[4][2]=((ay%mod)*(bx%mod))%mod;
b[4][3]=((ay%mod)*(by%mod))%mod;
b[4][4]=1;
pow(a,b,k-1);
ll ans=0;
ans+=((((a0%mod)*(b0%mod))%mod)*a[4][0])%mod;
ans%=mod;
ans+=((a0%mod)*(a[4][1]%mod))%mod;
ans%=mod;
ans+=((b0%mod)*(a[4][2])%mod)%mod;
ans%=mod;
ans+=(a[4][3])%mod;
ans%=mod;
ans+=(a[4][4]*(a0%mod)*(b0%mod))%mod;
ans%=mod;
printf("%I64u\n",ans%mod);
}
return 0;
}
												

多校 4686 Arc of Dream hdu 矩阵解的更多相关文章

  1. 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 ...

  2. HDU 4686 Arc of Dream (矩阵快速幂)

    Arc of Dream Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  3. hdu 4686 Arc of Dream(矩阵快速幂乘法)

    Problem Description An Arc of Dream is a curve defined by following function: where a0 = A0 ai = ai- ...

  4. HDU 4686 Arc of Dream(递归矩阵加速)

    标题效果:你就是给你一程了两个递推公式公式,第一个让你找到n结果项目. 注意需要占用该公式的复发和再构造矩阵. Arc of Dream Time Limit: 2000/2000 MS (Java/ ...

  5. HDU 4686 Arc of Dream(矩阵)

    Arc of Dream [题目链接]Arc of Dream [题目类型]矩阵 &题解: 这题你做的复杂与否很大取决于你建的矩阵是什么样的,膜一发kuangbin大神的矩阵: 还有几个坑点: ...

  6. HDOJ 4686 Arc of Dream 矩阵高速幂

    矩阵高速幂: 依据关系够建矩阵 , 高速幂解决. Arc of Dream Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/ ...

  7. HDU 4686 Arc of Dream(矩阵)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 题意: 思路: #include <iostream>#include <cs ...

  8. 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 ...

  9. HDU 4686 Arc of Dream 矩阵快速幂,线性同余 难度:1

    http://acm.hdu.edu.cn/showproblem.php?pid=4686 当看到n为小于64位整数的数字时,就应该有个感觉,acm范畴内这应该是道矩阵快速幂 Ai,Bi的递推式题目 ...

随机推荐

  1. iOS开发UITableViewCell的选中时的颜色设置

    1.系统默认的颜色设置 //无色 cell.selectionStyle = UITableViewCellSelectionStyleNone; //蓝色 cell.selectionStyle = ...

  2. 原生弹窗拖拽代码demo+简单的抽奖

    拖拽效果 效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  3. 说服式设计(persuasive design)的行为模型

    转自:http://www.sharetk.com/html/ued/User-Research/1404.html 一 模型简介 BJ Fogg提出了一个新的理解人类行为的模型,他称之为Fogg b ...

  4. ReviewBoard安装和配置札记

    眼下部门还没有採用Pair Programming那种时时刻刻都在review代码的工作方式,代码Review多採用走查方式,即代码写完后召开一个Code Review的Meeting,集中时间和经验 ...

  5. Unity3D 4.x 使用Mecanim实现动画控制

    Unity3D 4.x 版本号之后提供了一种新的动画机制Mecanim,尽管眼下还支持之前的Animation.但看到Unity3D 4.3 预览版里Sprite的动画也是基于Animator的,可知 ...

  6. Android模拟器的文件目录介绍

    文件存放在 .avd文件夹下 .ini为对应的配置文件     打开.avd文件夹 *.lock文件夹保存的是模拟器的一下数据,当模拟器正常关闭时这些文件夹都会被自动删除. 当模拟器无法开启的时候可以 ...

  7. 敲入url到浏览器后会发生什么

    浏览器连接DNS服务器,向url服务器请求把url转换为IP地址 DNS服务区返回URL的ip地址 浏览器建立一个TCP链接到web服务器80端口 web服务器发回的html代码 浏览器的渲染器根据h ...

  8. 模拟QQ系统设置面板实现功能

    业务需求: 基于网盘客户端的实现,原有网盘的设置面板无论从界面显示还是从业务需求都不能满足我们的正常需求.当前的要求是,模拟QQ系统设置的面板实现当前我们网盘中的基本配置功能.在完成这篇文章时已将基本 ...

  9. 【项目分析】利用C#改写JAVA中的Base64.DecodeBase64以及Inflater解码

    原文:[项目分析]利用C#改写JAVA中的Base64.DecodeBase64以及Inflater解码 最近正在进行项目服务的移植工作,即将JAVA服务的程序移植到DotNet平台中. 在JAVA程 ...

  10. ORACLE客户端乱码

    sqlplus 打开CMD窗口,出现乱码情况的解决办法 C:\Documents and Settings>set NLS_LANG=american_america.AL32UTF8 C:\D ...