HDU5015 233 Matrix(矩阵高速幂)

题目链接

题目大意:

给出nm矩阵,给出第一行a01,
a02, a03 ...a0m (各自是233, 2333, 23333...), 再给定第一列a10, a10, a10, a10,...an0.矩阵中的每一个元素等于左边的加上上面的,求出anm.

解题思路:

先要依据矩阵元素的特征得出相乘的矩阵T, 然后就是求这个矩阵T的m次幂(这里就能够用矩阵高速幂),最后再和给定的第一列所形成的矩阵相乘,就能得到anm。

求矩阵T请參考

代码:

#include <cstdio>
#include <cstring> typedef long long ll; const int N = 15;
const ll MOD = 10000007; ll A[N][N];
int B[N];
int n;
ll m; struct Rec { ll v[N][N]; Rec () { memset (v, 0, sizeof (v));}
void init () { for (int i = 0; i < n + 2; i++)
for (int j = 0; j < n + 2; j++)
v[i][j] = A[i][j];
} Rec operator * (const Rec &a) { Rec tmp;
for (int i = 0; i < n + 2; i++)
for (int j = 0; j < n + 2; j++)
for (int k = 0; k < n + 2; k++)
tmp.v[i][j] = (tmp.v[i][j] + (v[i][k] * a.v[k][j]) % MOD) % MOD;
return tmp;
} Rec operator *= (const Rec &a) { return *this = *this * a;
}
}num; void init () { memset (A, 0, sizeof (A));
for (int i = 0; i < n + 1; i++) {
A[i][0] = 10LL;
A[i][n + 1] = 1LL;
} A[n + 1][n + 1] = 1LL;
for (int i = 1; i < n + 1; i++)
for (int j = 1; j <= i; j++)
A[i][j] = 1LL;
B[0] = 23;
} Rec f(ll m) { if (m == 1)
return num;
Rec tmp;
tmp = f(m / 2);
tmp *= tmp;
if (m % 2)
tmp *= num;
return tmp;
} int main () { while (scanf ("%d%lld", &n, &m) != EOF) { for (int i = 1; i <= n; i++)
scanf ("%d", &B[i]); init();
B[n + 1] = 3;
num.init (); num = f(m); /* for (int i = 0; i <= n + 1; i++) {
for (int j = 0; j <= n + 1; j++)
printf ("%lld ", num.v[i][j]);
printf ("\n");
}*/ ll ans = 0;
for (int i = 0; i <= n + 1; i++)
ans = (ans + (num.v[n][i] * B[i]) % MOD) % MOD;
printf ("%lld\n", ans);
}
return 0;
}

HDU5015 233 Matrix(矩阵高速幂)的更多相关文章

  1. HDU5015 233 Matrix —— 矩阵快速幂

    题目链接:https://vjudge.net/problem/HDU-5015 233 Matrix Time Limit: 10000/5000 MS (Java/Others)    Memor ...

  2. 233 Matrix 矩阵快速幂

    In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23333, or 233 ...

  3. HDU - 5015 233 Matrix (矩阵快速幂)

    In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23333, or 233 ...

  4. 233 Matrix(矩阵快速幂+思维)

    In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23333, or 233 ...

  5. HDU 5015 233 Matrix --矩阵快速幂

    题意:给出矩阵的第0行(233,2333,23333,...)和第0列a1,a2,...an(n<=10,m<=10^9),给出式子: A[i][j] = A[i-1][j] + A[i] ...

  6. HDU 4965 Fast Matrix Calculation(矩阵高速幂)

    HDU 4965 Fast Matrix Calculation 题目链接 矩阵相乘为AxBxAxB...乘nn次.能够变成Ax(BxAxBxA...)xB,中间乘n n - 1次,这样中间的矩阵一个 ...

  7. [HDU5015]233 Matrix

    [HDU5015]233 Matrix 试题描述 In our daily life we often use 233 to express our feelings. Actually, we ma ...

  8. hdu 3221 Brute-force Algorithm(高速幂取模,矩阵高速幂求fib)

    http://acm.hdu.edu.cn/showproblem.php?pid=3221 一晚上搞出来这么一道题..Mark. 给出这么一个程序.问funny函数调用了多少次. 我们定义数组为所求 ...

  9. HDU 1575 Tr A(矩阵高速幂)

    题目地址:HDU 1575 矩阵高速幂裸题. 初学矩阵高速幂.曾经学过高速幂.今天一看矩阵高速幂,原来其原理是一样的,这就好办多了.都是利用二分的思想不断的乘.仅仅只是把数字变成了矩阵而已. 代码例如 ...

随机推荐

  1. HTTP协议的请求和响应学习

    本篇作为学习servlet的前提,http协议是学习JavaWeb开发的基石,不深入了解http协议,就不能说掌握了JavaWeb开发. HTTP协议有两个版本:HTTP1.0和HTTP1.1,那么有 ...

  2. python 调用shell命令三种方法

    #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器: #!/usr/bin/env python这种用法是为了防止操作系统用户没有将pyth ...

  3. WinSock - 建立无连接的通信

    1.建立一个基于对话框的工程,并在第二步中选择WOSA支持 2.建立客户端 (1)在头文件中添加成员变量 public: CSocket m_clientsocket; (2)每隔一秒钟向服务端发送一 ...

  4. STL algorithm算法lower_bound和upper_bound(31)

    lower_bound原型: function template <algorithm> std::lower_bound default (1) template <class F ...

  5. HDU--杭电--4504--威威猫系列故事——篮球梦--DP

    威威猫系列故事——篮球梦 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total ...

  6. 在SharePoint 2010中部署RBS (转)

    一.RBS(Remote BLOB Storage)简单介绍 在SharePoint的大部分企业应用案例中,SharePoint都是要承担着非常繁重的文件管理工作,这些文件类型包含了Word文档,Ex ...

  7. Delphi xe7并行编程快速入门(三篇)

    现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...

  8. Windbg抓取程序崩溃的dmp文件的方法

    Windbg抓取程序崩溃的dmp文件的方法 一.        简介 windbg是在windows平台下,强大的用户态和内核态调试工具.相比较于Visual Studio,它是一个轻量级的调试工具, ...

  9. java之jvm学习笔记十三(jvm基本结构)

    java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...

  10. 【错误】expected constructor, destructor, or type conversion before '.' token - 第八个游侠的日志 - 网易博客

    [错误]expected constructor, destructor, or type conversion before '.' token - 第八个游侠的日志 - 网易博客 [错误]expe ...