Codeforces 题面传送门 & 洛谷题面传送门

一道名副其实(beautiful)的结论题。

首先看到这道设问方式我们可以很自然地想到套用斐波那契数列的恒等式,注意到这里涉及到 \(F_{a+id}\),因此考虑斐波那契数列组合恒等式 \(F_{m+n+1}=F_mF_{n}+F_{m+1}F_{n+1}\),具体证明戳这里,这里就不再赘述了。

注意到此题还涉及后 \(18\) 位,也就是要将斐波那契数列的各种运算放到模 \(10^{18}\) 意义下进行,因此我们可以考虑找一下斐波那契数列在模 \(10^{18}\) 意义下的循环节,打个表可以发现斐波那契数列在模 \(10,100,1000,10000,100000,\cdots\) 意义下的循环节恰好是 \(60,300,1500,15000,150000\),后面依次乘 \(10\)(From my 题解 of Codeforces 193E)因此斐波那契数列在模 \(10^k(k\ge 3)\) 意义下的循环节为 \(1.5\times 10^k\),也就是说一定有 \(F_{1.5\times 10^k·i}\equiv 0\pmod{10^k}\),我们在下文中令 \(N=12\times 10^k\)(官方题解是 \(12\times 10^k\),至于为什么这么做我也不知道,反正对于我这种菜鸡而言,这种难度的题我只能搬官方题解/ll/wq),那么显然 \(1.5\times 10^k\mid N\),因此可以得到第一个非常 trivial 的结论:

Observation \(1\). \(F_{Ni}\equiv 0\pmod{10^k}(i\in\mathbb{N}_+)\)。

接下来我们考虑再来观察一些性质,可以注意到 \(F_{2N+1}=F_{N+1}^2+F_N^2\equiv F_{N+1}^2\pmod{10^{2k}}\),\(F_{3N+1}=F_{2N+1}F_{N+1}+F_{2N}F_N\equiv F_{2N+1}F_{N+1}\equiv F_{N+1}^3\pmod{10^{2k}}\),如此归纳下去可以得到一个普遍性的结论:

Observation \(2\). \(F_{xN+1}\equiv F_{N+1}^x\pmod{10^{2k}},x\in\mathbb{N}_+\)

接下来考虑探究一下这个 \(F_{N+1}\) 又有什么性质,有一个我也不知道怎么推出来(有哪位好心的鸽鸽教教蒟蒻这东西怎么证明啊 qwq/kel)的性质:

Observation \(3\). \(F_{N+1}\) 可以写成 \(8\times 10^k·t+1\) 的形式,其中 \(t\perp 10\)

证明不会

因此我们有 \(F_{xN+1}=F_{N+1}^x=(8\times 10^k·t+1)^x\),而我们暴力二项式定理将这东西展开就会发现平方项以上模 \(10^{2k}\) 都等于 \(0\),因此我们只用保留 \(1\) 次项和 \(0\) 次项即可,即

Observation \(4\). \(F_{xN+1}\equiv 8\times 10^k·t·x+1\pmod{10^{2k}}\)

接下来回到原问题,我们显然希望对每个 \(v=a+ix,i\in\mathbb{Z}\cap[0,n)\) 找到一个 \(p\) 满足 \(F_p\equiv v·10^u+q\pmod{10^{18}}\),其中 \(u\le 12,q<10^{u}\),这样原问题显然就做完了,因为这样从 \(10^u\) 位开始往后数一定可以得到 \(v\)。由于我们这些操作要放在模 \(10^{18}\) 意义下进行,因此我们取 \(k=9\),此时 \(N=1.2\times 10^{10}\),我们考虑令 \(X=125·t^{-1}·a\bmod{10^9},Y=125·t^{-1}·d\bmod{10^9}\),其中 \(t^{-1}\) 表示 \(t\) 在模 \(10^9\) 意义下的逆元,那么我们构造 \(b=XN+1,e=YN\) 符合题意,因为:

\[\begin{aligned}
&F_{b+ie}\\
=&F_{(X+iY)N+1}\\
\equiv&8·10^9·t·(X+iY)+1\\
\equiv&8·10^9·t·125·t^{-1}(a+id)+1\\
=&10^{12}·(10^9k+1)·(a+id)+1\\
\equiv&10^{12}·(a+id)+1\pmod{10^{18}}
\end{aligned}
\]

符合我们刚才的构造。

一句话来说就是 \(b=368131125a\bmod 10^9·1.2\times 10^{10}+1,e=368131125d\bmod 10^9+1.2\times 10^{10}\)

于是我们就做完了这个难度 3.5k 的题(

代码(只有短短的 8 行):

  1. #include <cstdio>
  2. int n,a,d;
  3. unsigned long long m=368131125,mod=1e9,x=1.2e10;
  4. int main(){
  5. scanf("%d%d%d",&n,&a,&d);
  6. printf("%llu %llu\n",m*a%mod*x+1,m*d%mod*x);
  7. return 0;
  8. }

Codeforces 1264F - Beautiful Fibonacci Problem(猜结论+找性质)的更多相关文章

  1. Codeforces 1461F - Mathematical Expression(分类讨论+找性质+dp)

    现场 1 小时 44 分钟过掉此题,祭之 大力分类讨论. 如果 \(|s|=1\),那么显然所有位置都只能填上这个字符,因为你只能这么填. scanf("%d",&n);m ...

  2. Codeforces Round #259 (Div. 1) A. Little Pony and Expected Maximum 数学公式结论找规律水题

    A. Little Pony and Expected Maximum Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.c ...

  3. Tetrahedron(Codeforces Round #113 (Div. 2) + 打表找规律 + dp计数)

    题目链接: https://codeforces.com/contest/166/problem/E 题目: 题意: 给你一个三菱锥,初始时你在D点,然后你每次可以往相邻的顶点移动,问你第n步回到D点 ...

  4. 【CSP模拟赛】独立集(最长上升子序列&大力猜结论)

    题目描述 有一天,一个名叫顺旺基的程序员从石头里诞生了.又有一天,他学会了冒泡排序和独 立集.在一个图里,独立集就是一个点集,满足任意两个点之间没有边.于是他就想把这两 个东西结合在一起.众所周知,独 ...

  5. Atcoder Grand Contest 031 D - A Sequence of Permutations(置换+猜结论)

    Atcoder 题面传送门 & 洛谷题面传送门 猜结论神题. 首先考虑探究题目中 \(f\) 函数的性质,\(f(p,q)_{p_i}=q_i\leftarrow f(p,q)\circ p= ...

  6. Applying Eigenvalues to the Fibonacci Problem

    http://scottsievert.github.io/blog/2015/01/31/the-mysterious-eigenvalue/ The Fibonacci problem is a ...

  7. [codeforces 528]B. Clique Problem

    [codeforces 528]B. Clique Problem 试题描述 The clique problem is one of the most well-known NP-complete ...

  8. Codeforces 55D Beautiful Number

    Codeforces 55D Beautiful Number a positive integer number is beautiful if and only if it is divisibl ...

  9. codeforces.com/contest/325/problem/B

    http://codeforces.com/contest/325/problem/B B. Stadium and Games time limit per test 1 second memory ...

随机推荐

  1. Less-25 preg_replace2

    Less-25: 核心语句: 各种回显也均有. 通过blacklist,我们可以发现,本题屏蔽了and和or. preg_replace函数中正则表达式后面的i是一个修饰符,代表正则匹配时不区分大小写 ...

  2. 网络通信IO的演变过程(一)(一个门外汉的理解)

    以前从来不懂IO的底层,只知道一个大概,就是输入输出的管道怼到一起,然后就可以传输数据了. 最近看了周志垒老师的公开课后,醍醐灌顶. 所以做一个简单的记录. 0 计算机组成原理相关 0.1. 计算机的 ...

  3. DM8数据库单机安装

    一.系统概要 表1 部署情况一览表 操作系统 Windows10 数据库版本 DM8(开发版) 数据库类型 单机 磁盘挂载 无 Key信息 无 二.操作系统信息检查 2.1 操作系统版本 [root@ ...

  4. C/C++ 数据类型 表示最大 最小数值 探讨

    C/C++中存储数字格式有整型和浮点型 字符型数据本质上也是以整型存储 整型 对于整型数据,最大值最小值很好计算 先确定对应数据型在本地所占用的字节数,同一数据型由于系统或者编译器的不同,所占字节不同 ...

  5. 一张图彻底搞懂Spring循环依赖

    1 什么是循环依赖? 如下图所示: BeanA类依赖了BeanB类,同时BeanB类又依赖了BeanA类.这种依赖关系形成了一个闭环,我们把这种依赖关系就称之为循环依赖.同理,再如下图的情况: 上图中 ...

  6. (转载)gcc -l参数和-L参数

    -l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so ...

  7. Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) Editorial题解

    A 略,发现只有当末尾为9时才满足条件.. B 简单模拟,注意数组大小!!! C 简单模拟. D 比较暴力的一个做法就是每次找一个开始匹配的起始点,然后每次不同时向后跳2就行了. 注意这里最后还要判断 ...

  8. P4430 小猴打架

    P4430 小猴打架 题目意思就是让你求,在网格图中(任意两点都有边)的生成树的个数(边的顺序不同也算不同的方案). 首先我们考虑一个生成树,由于一定有n-1条边,单单考虑添加边的顺序,根据乘法原理, ...

  9. 第01课 OpenGL窗口(4)

    下面的代码处理所有的窗口消息.当我们注册好窗口类之后,程序跳转到这部分代码处理窗口消息. LRESULT CALLBACK WndProc( HWND hWnd, // 窗口的句柄 UINT uMsg ...

  10. 启用或禁用普通用户Exchange Online PowerShell功能

    默认情况下,允许在 Microsoft 365 中创建的所有帐户都可以使用 Exchange Online PowerShell.管理员可以使用 Exchange Online PowerShell ...