Link

设\(e=\frac{b+\sqrt d}2,i=\frac{b-\sqrt d}2\)。

显然\(f_n=e^n+i^n\)是一个整数,且\(f_n=(e+i)f_{n-1}+eif_{n-2}\)。

递推式中的\(e+i=b,ei=\frac{b^2-d}4\),根据题目条件这两个也是整数。

因此我们可以利用矩阵快速幂求出\(f_n\bmod P\)。

显然\(i\in(-1,0]\),因此\(i^n\in(-1,0]\),因此\(\lfloor e^n\rfloor\equiv f_n-\lceil |i^n|\rceil\pmod P\),直接判断即可。

#include<cstdio>
#include<cstring>
using u64=unsigned long long;
const u64 P=7528443412579576937ll;
u64 inc(u64 a,u64 b){return a+=b,a>=P? a-P:a;}
u64 mul(u64 a,u64 b){u64 r=0;for(;b;b>>=1,a=inc(a,a))if(b&1)r=inc(a,r);return r;}
struct matrix{u64 a[3][3];matrix(){memset(a,0,72);}u64*operator[](int x){return a[x];}}E,I;
matrix operator*(matrix a,matrix b)
{
matrix c;
for(int i=1;i<=2;++i) for(int j=1;j<=2;++j) for(int k=1;k<=2;++k) c[i][j]=inc(c[i][j],mul(a[i][k],b[k][j]));
return c;
}
int main()
{
u64 b,d,n;int f;
scanf("%llu%llu%llu",&b,&d,&n);
if(!n) return !printf("1");
f=--n&1,E[1][2]=(d-b*b)/4,E[2][1]=1,E[2][2]=b,I[1][1]=I[2][2]=1;
for(;n;n>>=1,E=E*E) if(n&1) I=E*I;
printf("%llu",inc(mul(2,I[1][2]),mul(b,I[2][2]))-(d*d^b&&f));
}

Luogu P3263 [JLOI2015]有意义的字符串的更多相关文章

  1. 洛谷 P3263 [JLOI2015]有意义的字符串

    洛谷 首先,看到\((\frac{(b+\sqrt{d})}{2})^n\),很快能够想到一元二次方程的解\(\frac{-b\pm\sqrt{\Delta}}{2a}\). 所以可以推出,\(\fr ...

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

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

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

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

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

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

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

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

  6. 【BZOJ4002】[JLOI2015]有意义的字符串 - 矩阵乘法

    题意: 给出b,d,n,求$\lfloor(\frac{b+\sqrt{d}}{2})^n\rfloor \mod 999999999999999989$(原题是7528443412579576937 ...

  7. 【BZOJ】4002: [JLOI2015]有意义的字符串

    题意 求$\left \lfloor \left( \frac{b+\sqrt{d}}{2} \right)^n \right \rfloor \pmod {7528443412579576937} ...

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

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

  9. bzoj 4002: [JLOI2015]有意义的字符串

    这个题... #include <bits/stdc++.h> #define rep(i, a, b) for (int i = a; i <= b; i++) #define d ...

随机推荐

  1. nyoj 82

    题目:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=82 2018-06-23 23:44:05 p.s.自己省错题了: 描述 一个叫ACM的 ...

  2. LinkList(链表)

    code: #include <stdio.h> #include <time.h> #include <conio.h> #include <stdlib. ...

  3. 【转】How to create a test plan

    What is a Test Plan? A TEST PLAN is a detailed document that describes the test strategy, objectives ...

  4. 简单描述MySQL常用引擎的特点及MySQL的逻辑架构

    目录 表的分类数据库引擎? 首先得说说mysql的逻辑架构,它整体分为3层: 常用引擎: 补充知识点: 表的分类数据库引擎? 引擎是什么? 引擎就是一个系统最核心的部分,比如汽车的发动机,人的心脏 数 ...

  5. Django中的prefetch_related()函数优化

    对于多对多字段(ManyToManyField)和一对多字段, 可以使用prefetch_related()来进行优化 prefetch_related()和select_related()的设计目的 ...

  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定引用右对齐

    <!DOCTYPE html> <html> <head> <title>菜鸟教程(runoob.com)</title> <meta ...

  7. Maven 项目中使用 logback

    添加依赖 <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logsta ...

  8. Java基础 -4.3

    While循环结构 while循环 public static void main(String[] args) { while(布尔表达式) { 条件满足时执行; 修改循环条件; } } do wh ...

  9. Java1.7已经舍弃substr了

    网上一堆在写substring和substr区别的文章,都是过时的. 起码在官方6.0的api文档中已经找不到了,只有substring()

  10. 【PAT甲级】1014 Waiting in Line (30 分)(队列维护)

    题面: 输入四个正整数N,M,K,Q(N<=20,M<=10,K,Q<=1000),N为银行窗口数量,M为黄线内最大人数,K为需要服务的人数,Q为查询次数.输入K个正整数,分别代表每 ...