link: http://acm.hdu.edu.cn/showproblem.php?pid=4686

构造出来的矩阵是这样的:根据题目的ai * bi = ……,可以发现 矩阵1 * 矩阵3 = 矩阵2。然后就是矩阵快速幂了。

1

1 ai bi ai*bi Si
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

2

1 ai+1 bi+1 ai+1*bi+1 Si+1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

3

1 AY BY AY*BY AY*BY
0 AX 0 AX*BY AX*BY
0 0 BX AY*BX AY*BX
0 0 0 AX*BX AX*BX
0 0 0 0 1
 #include <iostream>
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
 #include <cmath>
 #include <cctype>
 #include <algorithm>
 #include <queue>
 #include <deque>
 #include <queue>
 #include <list>
 #include <map>
 #include <set>
 #include <vector>
 #include <utility>
 #include <functional>
 #include <fstream>
 #include <iomanip>
 #include <sstream>
 #include <numeric>
 #include <cassert>
 #include <ctime>
 #include <iterator>
 const int INF = 0x3f3f3f3f;
 ][] = {{-,},{,},{,-},{,},{-,-},{-,},{,-},{,}};
 using namespace std;
 #define LL __int64
 #define MOD 1000000007
 typedef struct
 {
     LL m[][];
 }mat;
 mat X, Y;
 LL n, a0, ax, ay, b0, bx, by;
 mat multi(mat a, mat b)
 {
     mat c; int j, i, k;
     ; i < ; ++i)
     {
         ; j < ; ++j)
         {
             c.m[i][j] = ;
             ; k < ; ++k)
             {
                 c.m[i][j] += a.m[i][k] * b.m[k][j]%MOD;
             }
             c.m[i][j] %= MOD;
         }
     }
     return c;
 }
 mat power(LL k)
 {
     mat ans = X, p = Y;
     while (k)
     {
         ) ans = multi(ans, p);
         k /= ; p = multi(p, p);
     }
     return ans;
 }
 int main(void)
 {
     #ifndef ONLINE_JUDGE
     freopen("in.txt", "r", stdin );
     #endif // ONLINE_JUDGE
     ios::sync_with_stdio(false);
     while (cin>>n>>a0>>ax>>ay>>b0>>bx>>by)
     {
         "<<endl; continue;}
         memset(X.m, , sizeof(X.m));
         memset(Y.m, , sizeof(Y.m));
         X.m[][] = , X.m[][] = a0%MOD, X.m[][] = b0%MOD,
         X.m[][] = a0*b0%MOD, X.m[][] = a0*b0%MOD;
         Y.m[][] = , Y.m[][] = ay%MOD, Y.m[][] = by%MOD,
         Y.m[][] = ay*by%MOD, Y.m[][] = ay*by%MOD, Y.m[][] = ax%MOD,
         Y.m[][] = ax*by%MOD, Y.m[][] = ax*by%MOD, Y.m[][] = bx%MOD,
         Y.m[][] = ay*bx%MOD, Y.m[][] = ay*bx%MOD, Y.m[][] = ax*bx%MOD,
         Y.m[][] = ax*bx%MOD, Y.m[][] = ;
         mat ans = power(n-);
         LL touch = ans.m[][];
         cout << touch <<endl;
     }
     ;
 }

注意 n==0 的时候特判呐~

走吧,小胖!

hdu4686 Arc of Dream ——构造矩阵+快速幂的更多相关文章

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

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

  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 构造矩阵

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 因为ai = ai-1*AX+AY ,bi = bi-1*BX+BY ,那么ai*bi=AX*B ...

  4. HDU 5667 构造矩阵快速幂

    HDU 5667 构造矩阵快速幂 题目描述 解析 我们根据递推公式 设 则可得到Q的指数关系式 求Q构造矩阵 同时有公式 其中φ为欧拉函数,且当p为质数时有 代码 #include <cstdi ...

  5. hdu 4565 So Easy! (共轭构造+矩阵快速幂)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4565 题目大意: 给出a,b,n,m,求出的值, 解题思路: 因为题目中出现了开根号,和向上取整后求 ...

  6. HUST 1569(Burnside定理+容斥+数位dp+矩阵快速幂)

    传送门:Gift 题意:由n(n<=1e9)个珍珠构成的项链,珍珠包含幸运数字(有且仅由4或7组成),取区间[L,R]内的数字,相邻的数字不能相同,且旋转得到的相同的数列为一种,为最终能构成多少 ...

  7. hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 题意不难理解,当x小于10的时候,数列f(x)=x,当x大于等于10的时候f(x) = a0 * ...

  8. D. Magic Gems(矩阵快速幂 || 无敌杜教)

    https://codeforces.com/contest/1117/problem/D 题解:有一些魔法宝石,魔法宝石可以分成m个普通宝石,每个宝石(包括魔法宝石)占用1个空间,让你求占用n个空间 ...

  9. HDU4686 Arc of Dream 矩阵快速幂

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

随机推荐

  1. What are the advantages of ReLU over sigmoid function in deep neural network?

    The state of the art of non-linearity is to use ReLU instead of sigmoid function in deep neural netw ...

  2. shell awk入门

    本文参考自 http://www.cnblogs.com/zhuyp1015/archive/2012/07/11/2586985.html awk:好用的数据处理工具 awk 也是一个非常棒的数据处 ...

  3. 单据类型BE构建

    开发流程:BE--UI--发布在开发时有必要对元数据.代理调用.弱类型.强类型有所了解基本的单据开发包括单据类型BE.单据状态BE.单据BE,下面分别罗列出各单据的BE的设计开发: 本章主要讲解单据类 ...

  4. (原创)LAMP搭建之一:图解如何安装并检查LAMP

    LAMP搭建之一:图解如何安装并检查LAMP 第一步:安装Linux(RedHat5) 第二步:rpm -qa httpd(查看apache是否安装) rpm -qa php(查看php是否安装) r ...

  5. iOS Question

    Q1: dyld: Library not loaded: @rpath/libswiftCore.dylib 1. 退出 Xcode2. 重启电脑3. 找到 这个 DerivedData 文件夹 删 ...

  6. Java文件操作与输入输出流

    文件操作 package ch15; import java.io.*; /** * Created by Jiqing on 2016/12/28. */ public class FileTest ...

  7. JMS消息中间件系列[ActiveMQ](一)

    版本5.13.3的特性: 1.Supports a variety of Cross Language Clients and Protocols from Java, C, C++, C#, Rub ...

  8. 项目忽然出现 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解决方法

    0.环境: 新装win8.1系统,Tomcat配置无误. 1.错误: 项目中某一.jps页面忽然出现错误,鼠标点上去为:The superclass "javax.servlet.http. ...

  9. Java 实现word 中写入文字图片的解决方案

    JAVA生成WORD文件的方法目前有以下两种方式: 一种是jacob 但是局限于windows平台 往往许多JAVA程序运行于其他操作系统 在此不讨论该方案; 一种是poi但是他的excel处理很程序 ...

  10. 通过java输出当前系统时间

    获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowString ...