Description

传送门

Solution

由于这里带了小数,直接计算显然会爆掉,我们要想办法去掉小数。

而由于原题给了暗示:b2<=d<=(b+1)2,我们猜测可以利用$(\frac{b-\sqrt{d}}{2})^{n}$的范围为(-1,1)的性质。

则$ans=((\frac{b+\sqrt{d}}{2})^{n}+(\frac{b-\sqrt{d}}{2})^{n})-(\frac{b-\sqrt{d}}{2})^{n}$。

易得第一个括号里的式子不包含小数(强行组合数算一下就发现啦)

我们考虑特征方程,

现在定义$a_{n}=(\frac{b+\sqrt{d}}{2})^{n}+(\frac{b-\sqrt{d}}{2})^{n}$

解得$a_{n}=b*a_{n-1}+\frac{(d-b^{2})}{4}*a_{n-2}$

其中,边界a0=2,a1=b。

然后矩阵乘法就好啦。(备注:由于此处两个数相乘会过大,需要用到快速乘法,log(n)的那种)

最后,如果 $(\frac{b-\sqrt{d}}{2})^{n}\geqslant 0$,则由于题目向下取整,可以忽略;

故只有$b^{2}\neq d$且n为奇数才需要对答案减一。

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef unsigned long long ull;
const ull mod=7528443412579576937ull;
ull b,d,n;
ull mul(ull a,ull b)
{
ull ans=;
while(b)
{
if(b&) ans=(a+ans)%mod;
b>>=;a=(a+a)%mod;
}
return ans;
}
struct Matrix{ull x[][];
friend Matrix operator*(Matrix a,Matrix b)
{
Matrix c;memset(c.x,,sizeof(c.x));
for (int i=;i<=;i++)
for (int j=;j<=;j++)
for (int k=;k<=;k++)
c.x[i][j]=(c.x[i][j]+mul(a.x[i][k],b.x[k][j]))%mod;
return c;
}
}a;
Matrix ksm(Matrix a,ull t)
{
Matrix ans;memset(ans.x,,sizeof(ans.x));
ans.x[][]=ans.x[][]=;
while (t)
{
if (t&) ans=ans*a;
t>>=;
a=a*a;
}
return ans;
}
ull ans;
int main()
{
scanf("%llu%llu%llu",&b,&d,&n);
if (!n) {printf("");return ;}
a.x[][]=b;
a.x[][]=(d-b*b)/%mod;
a.x[][]=;
a.x[][]=;
a=ksm(a,n-);
ans=(mul(b,a.x[][])+mul(,a.x[][]))%mod;
if (d!=b*b&&!(n&)) ans--;
if (ans<) ans+=mod;
cout<<ans;
}

[BZOJ4002][JLOI2015]有意义的字符串-[快速乘法+矩阵乘法]的更多相关文章

  1. bzoj4002 [JLOI2015]有意义的字符串 快速幂

    Description B 君有两个好朋友,他们叫宁宁和冉冉. 有一天,冉冉遇到了一个有趣的题目:输入 b;d;n,求((b+sqrt(D)/2)^N的整数部分,请输出结果 Mod 752844341 ...

  2. bzoj4002 [JLOI2015]有意义的字符串 特征根+矩阵快速幂

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4002 题解 神仙题. 根据下面的一个提示: \[ b^2 \leq d \leq (b+1)^ ...

  3. BZOJ4002 [JLOI2015]有意义的字符串

    据说这两场加起来只要170= =而这是最简单的题目了QAQ 看到$(\frac {b + \sqrt {d} } {2} )^n$,第一反应是共轭根式$(\frac {b - \sqrt {d} } ...

  4. BZOJ4002 [JLOI2015]有意义的字符串 【数学 + 矩乘】

    题目链接 BZOJ4002 题解 容易想到\(\frac{b + \sqrt{d}}{2}\)是二次函数\(x^2 - bx + \frac{b^2 - d}{4} = 0\)的其中一根 那么就有 \ ...

  5. 【BZOJ4002】[JLOI2015]有意义的字符串(数论,矩阵快速幂)

    [BZOJ4002][JLOI2015]有意义的字符串(数论,矩阵快速幂) 题面 BZOJ 洛谷 题解 发现我这种题总是做不动... 令\(A=\frac{b+\sqrt d}{2},B=\frac{ ...

  6. 【BZOJ4002】[JLOI2015]有意义的字符串 数学

    [BZOJ4002][JLOI2015]有意义的字符串 Description B 君有两个好朋友,他们叫宁宁和冉冉.有一天,冉冉遇到了一个有趣的题目:输入 b;d;n,求 Input 一行三个整数 ...

  7. BZOJ_4002_[JLOI2015]有意义的字符串_矩阵乘法

    BZOJ_4002_[JLOI2015]有意义的字符串_矩阵乘法 Description B 君有两个好朋友,他们叫宁宁和冉冉.有一天,冉冉遇到了一个有趣的题目:输入 b;d;n,求 Input 一行 ...

  8. [JLOI2015]有意义的字符串

    4002: [JLOI2015]有意义的字符串 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1000  Solved: 436[Submit][St ...

  9. 【bzoj4870】[Shoi2017]组合数问题 dp+快速幂/矩阵乘法

    题目描述 输入 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 输出 一行一个整数 ...

随机推荐

  1. 理解活在IPHONE中的那些APP (五)

    为了让App活起来 上一篇简单的说了一下关于IOS的一些事情,现在有必要深入了解一些对于让App活起来比较关键的信息.比如IOS系统的架构,这个我就不赘述了,请移步http://blog.csdn.n ...

  2. 协议森林09 爱的传声筒 (TCP连接)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在TCP协议与"流"通信中,我们概念性的讲解了TCP通信的方式 ...

  3. 3、Dubbo-环境搭建

    官方推荐使用 Zookeeper 注册中心 3.1).[windows]-安装zookeeper 开发中均在Linux中安装!!! 1.下载zookeeper 网址 https://archive.a ...

  4. Markdown语法初体验

    前言 由于把博客主题样式换了,所以改用Markdown语法,让代码看起来更加舒服一些. 照葫芦画瓢 这里是H1标题(===) 这里是H2标题(---) 使用一个#号 使用两个#号 使用三个#号 引用 ...

  5. PHPStorm自定义主题配置

    1.下载喜欢的主题 官方下载地址:下载 2.将.icls主题文件放到PHPStorm的配置中 windows下主题位置:C:\Users\Administrator\.PhpStorm2017.3\c ...

  6. Yum 下载安装包及对应依赖包

    Yum 下载安装包及对应依赖包: 安装该软件:yum install -y yum-plugin-downloadonly 以下载 openssh-server 为例 yum install -y o ...

  7. PAT——1039. 到底买不买

    小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子 ...

  8. nDPI 的论文阅读和机制解析

    nDPI: Open-Source High-Speed Deep Packet Inspection Wireless Communications & Mobile Computing C ...

  9. 全面理解 ASP.NET Core 依赖注入 (转载)

    DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET  Core的DI实现以及对实例 ...

  10. 闲话缓存:ZFS 读缓存深入研究-ARC(二)

    Solaris ZFS ARC的改动(相对于IBM ARC) 如我前面所说,ZFS实现的ARC和IBM提出的ARC淘汰算法并不是完全一致的.在某些方面,它做了一些扩展: ·         ZFS A ...