hdu4686 Arc of Dream 2013 Multi-University Training Contest 9矩阵快速幂
Arc of Dream
Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 932 Accepted Submission(s): 322

解法:
因为a0=A0,ai=a(i-1)*Ax+Ay,
b0=B0,bi=b(i-1)*Bx+By;
所以
ai*bi=a(i-1)*b(i-1)*Ax*Bx+Ay*Bx*b(i-1)+Ax*By*a(i-1)+Ay*By;
Si=S(i-1)+ai*bi;
则构造矩阵为(k=n-1)
Sn | 1 | Ax*Bx | Ay*BX | Ax*By | Ay*By | s(n-1) | ||||
an*bn | 0 | Ax*Bx | Ay*BX | Ax*By | Ay*By | a(n-1)*b(n-1) | ||||
bn | 0 | 0 | Bx | 0 | By | b(n-1) | ||||
an | 0 | 0 | 0 | Ax | Ay | a(n-1) | ||||
1 | 0 | 0 | 0 | 0 | 1 | 1 |
所以构造矩阵为一个5*5的矩阵如上表的中间部分:
代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define mod 1000000007
#define ll long long int
using namespace std;
int N;
struct matrix
{
ll a[][];
}origin,res;
matrix multiply(matrix x,matrix y)
{
matrix temp;
memset(temp.a,,sizeof(temp.a));
for(int i=;i<N;i++)
{
for(int j=;j<N;j++)
{
for(int k=;k<N;k++)
{
temp.a[i][j]+=x.a[i][k]*y.a[k][j]%mod;
temp.a[i][j]%=mod;
}
}
}
return temp;
}
void calc(ll n)
{
memset(res.a,,sizeof(res.a));
for(int i=;i<N;i++)
res.a[i][i]=;
while(n)
{
if(n&)
res=multiply(res,origin);
n>>=;
origin=multiply(origin,origin);
}
}
int main()
{
N=;
ll n;
ll a0,ax,ay,b0,bx,by;
while(cin>>n>>a0>>ax>>ay>>b0>>bx>>by){
memset(origin.a,,sizeof(origin.a));
origin.a[][]=;origin.a[][]=ax*bx%mod;
origin.a[][]=ay*bx%mod;origin.a[][]=ax*by%mod;
origin.a[][]=ay*by%mod;
origin.a[][]=ax*bx%mod;origin.a[][]=ay*bx%mod;
origin.a[][]=ax*by%mod;origin.a[][]=ay*by%mod;
origin.a[][]=bx%mod;origin.a[][]=by%mod;
origin.a[][]=ax%mod;origin.a[][]=ay%mod;
origin.a[][]=;
if(n){
calc(n-);
ll sum=;
sum+=res.a[][]*a0%mod*b0%mod;
sum+=res.a[][]*a0%mod*b0%mod;
sum%=mod;
sum+=res.a[][]*b0%mod;
sum%=mod;
sum+=res.a[][]*a0%mod;
sum%=mod;
sum+=res.a[][];
sum%=mod;
cout<<sum<<endl;
}
else cout<<<<endl;
}
}
hdu4686 Arc of Dream 2013 Multi-University Training Contest 9矩阵快速幂的更多相关文章
- 2013长沙邀请赛A So Easy!(矩阵快速幂,共轭)
So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- poj 3735 Training little cats 矩阵快速幂+稀疏矩阵乘法优化
题目链接 题意:有n个猫,开始的时候每个猫都没有坚果,进行k次操作,g x表示给第x个猫一个坚果,e x表示第x个猫吃掉所有坚果,s x y表示第x个猫和第y个猫交换所有坚果,将k次操作重复进行m轮, ...
- POJ 3735 Training little cats<矩阵快速幂/稀疏矩阵的优化>
Training little cats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13488 Accepted: ...
- Training little cats_矩阵快速幂
Description Facer's pet cat just gave birth to a brood of little cats. Having considered the health ...
- poj 3753 Training little cats_矩阵快速幂
题意: 通过各种操作进行,给第i只猫花生,第i只猫吃光花生,第i只猫和第j只猫互换花生,问n次循环操作后结果是什么 很明显是构建个矩阵,然后矩阵相乘就好了 #include <iostream& ...
- POJ 3735 Training little cats 矩阵快速幂
http://poj.org/problem?id=3735 给定一串操作,要这个操作连续执行m次后,最后剩下的值. 记矩阵T为一次操作后的值,那么T^m就是执行m次的值了.(其实这个还不太理解,但是 ...
- HDU4686 Arc of Dream —— 矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4686 Arc of Dream Time Limit: 2000/2000 MS (Java/Others) Memo ...
- hdu4686 Arc of Dream
Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission ...
- HDU4686 Arc of Dream 矩阵快速幂
Arc of Dream Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
随机推荐
- 增强遍历和Object多参数遍历
public class T2 { public void t1(Object o){//Object是任何类型,多态 System.out.println(o.toString()); } publ ...
- ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) python代码报错
import sys reload(sys) sys.setdefaultencoding('utf-8')
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...
- 微信网页授权封装接口——node.js版
Wechat 网页授权 授权url:(请在微信客户端中打开此链接体验) xxx为config.js中的WECHAT_DOMAIN 1.scope为snsapi_base xxx/?route=auth ...
- 区块链下的io域名到底有多神秘?
不知大家发现没有 一些科技创业公司首选域名后缀 是.IO WHY? 因为给人一种很酷的感觉啊~ 譬如,极客届享誉盛名的盘古越狱团队官网:http://pangu.io 国内优质社区,简书--创作你的创 ...
- ios和android的发展前景比较
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt164 一直都有很多人在讨论未来的IOS和android市场哪个前景更好,现在 ...
- 转:JDK中的URLConnection参数详解
针对JDK中的URLConnection连接Servlet的问题,网上有虽然有所涉及,但是只是说明了某一个或几个问题,是以FAQ的方式来解决的,而且比较零散,现在对这个类的使用就本人在项目中的使用经验 ...
- 展示博客(Beta阶段)
展示博客 0x00 团队成员 成员 博客地址 简介 黄建英 http://www.cnblogs.com/smilehjy/ beta阶段的新成员,负责前端界面调整 谢晓萍 http://www.cn ...
- 201521123107 《Java程序设计》第1周学习总结
第1周学习总结 1.本周学习总结 本周我们正式开始了对一门新的编程语言java的学习.本周的主要内容是初步了解了java的发展过程,java具有简约且简单 .平台无关性等优点.java的3个关键的工具 ...
- 团队作业4——第一次项目冲刺(Alpha版本) Day7
首先和助教及老师表示抱歉,博客确实当时就写了,但是一直不算写好,因为这几天卡住了,预计实现的功能实现不了,进度跟不上,现在也在寻求解决方法. 1.站立式会议: 遇到的困难和收获:在开发的过程中其实遇到 ...