首页 > 其他分享 >CF1264F Beautiful Fibonacci Problem

CF1264F Beautiful Fibonacci Problem

时间:2024-02-06 12:22:05浏览次数:26  
标签:Beautiful 10 CF1264F Fib 模数 循环 Fibonacci Problem mod

一道比较Beautiful的结论题,初始感觉难以下手,做了后认为在CF3500中不算很难的(逃

看到题目中“后18位的子串”,很明显的,我们要求一下Fibonacci数列 ${mod}10^k$ 的循环节。
实践打表证明这个循环节为 $1.5*10^k$

但是我们需要一个随Fibonacci下标线性增加,$mod10^k$ 的值也线性增加的方法,而如果下标每次加循环节,模出的值是相同的。为了产生这个线性增长的公差,考虑用大的模数模小的循环节

观察Fibonnaci的诸多性质,在模数增加后仍能存在性质的只有对Fibonacci数列的平方,即 $Fib_{2n+1}=Fib_{n+1}2+Fib_{n}2$ 。于是想到对模数也平方,设循环节为 $N$ 就得到了一个很好的式子:

$Fib_{N+1}≡t10^k+1(mod 10{2k}),Fib_{2N+1}=Fib_{N+1}2+Fib_{N}2≡(t+1)2≡2t10^k+1(mod 10^{2k})$

这样就能归纳得到 $Fib_{xN+1}≡xt*10k+1(mod10)$,就是上面说的我们想要得到的式子。

然后就是我卡住的地方。因为我们只需要等差数列 ${a_n}$ 中的数只需在其子串中出现,于是只需让 $a+id≡xt(mod10^k)$ 就能满足条件。因为 $t$ 和 $10^k$ 是互质的,所以 $t$ 关于 $10^k$ 是有逆元的,只需用exgcd就能求出

于是$xN+1≡aNt{-1}+1+dN*ti$,即得到 $b=Nat{-1}+1,e=N*d*t$。注意最后要对 $a*t{-1},b*t$ 取模,而 $N$ 是循环节,不要取模

于是,我们就愉快的把这道3500 constructive algorithms 秒了(bushi

代码就不贴了,过于简单。因为 $a_n$ 最大不超过 $10^6$ ,于是模数选 $106-109$ 都可以。我为了省去矩阵快速幂,选了 $10^7$ ,此时 $t^{-1}=9945049$

完结撒花!

标签:Beautiful,10,CF1264F,Fib,模数,循环,Fibonacci,Problem,mod
From: https://www.cnblogs.com/skh504535/p/18009524

相关文章

  • Problem P06. [算法课分治] 找到 k 个最长重复字符串
    注意是在该子字符串内每个字符的出现次数都不少于k。可以采用分治的方法,函数找一个不符合条件的字符,然后将字符串分成两个子字符串,就这样进行递归运算,每次找到符合条件的子字符串就判断一波长度,然后将最长的长度值存下来。#include<iostream>#include<bits/stdc++.h>#includ......
  • CF1677E Tokitsukaze and Beautiful Subsegments
    (题目传送门)你就算再怎么套路我也做不出来……看到\(\maxa_k\),根据套路想到用单调栈处理出\(a_i\)左边第一个比它大的位置\(pre_i\),右边第一个比它大的位置\(nxt_i\)。枚举最大值\(a_i\)考虑它的贡献,显然若存在\(j,k\)满足\(nxt_i<j,k<pre_i\)且\(a_j\timesa_k=a......
  • BeautifulSoup爬虫库应用——Python 页面解析
    爬虫技术作为信息搜集的重要手段,在大数据时代发挥着至关重要的作用。通过网络爬虫,可以高效地从各种在线源头获取大规模、多样化的数据,为大数据分析和应用提供了必要的原始材料。首先,爬虫使得大数据的采集更为全面和及时。网络上存在着庞大的信息资源,包括社交媒体、新闻网站、电子......
  • A+B problem 题解
    先把一个单项式理解为:符号,系数的绝对值,字母,指数。为了方便操作,一口气读完整个字符串(数组),然后去扫描。因为如果第一项为整数的话没有符号,判一判。读入系数的绝对值像快读。如果有\(\texttt{^}\)这个符号,读一下之后的指数。由于只有三个字母,所以可以复制粘贴,不用写冗余的......
  • OGG-00303 Problem at line 37. Expecting file, table, or record definition: TimeZ
    由于源端和目标端表结构不一致(列顺序有差异),因此使用def文件来同步。在源端配置好def文件后,启动复制进程报错,具体信息如下:2024-01-3111:24:16ERROROGG-00303OracleGoldenGateDeliveryforOracle,r_bszj.rp:Problematline37.Expectingfile,table,orrecorddefin......
  • A Balanced Problemset?
    引言题目链接:https://codeforces.com/contest/1925/problem/B思路由于最后的答案是x分解的全部数的gcd,所以该答案一定是x的因数,只要遍历x的因数k,那么该因数能将x分解成\(\frac{x}{k}\)份。若\(\frac{x}{k}\geqn\),则可将其构造成n组,gcd为k的答案,只需要找到......
  • 【容斥反演】Nanami and Trip Schemes Count Problem
    链接给定\(k\)个特殊格子,求从(1,1)往右或往上走到(n,m),在经过不超过\(p\)个特殊格的情况下的方案数设\(f(S)\)表示钦定走S集合中格子的方案,\(g(S)\)为恰好走S集合的方案,那么\(f\)与\(g\)的关系就是一个\(\subseteq\)意义下的前缀和。即\[f(S)=\sum_{S\subs......
  • CF1925B A Balanced Problemset? 题解
    CF1925B题解题目链接CodeforcesLuogu题目大意有一个长度为\(n\)且和为\(x\)的正整数序列,询问该序列可能的最大公因数。多测。简要思路首先先给出结论:最终的答案一定是\(x\)的因数。接下来我通过两种方法证明:一、类似于“更相减损法”一个序列的\(\gcd\)等于......
  • B. A Balanced Problemset
    原题链接忠告1:要学会计算时间复杂度!!忠告2:要学会抓事实,不要掉进题目直观模拟的陷阱里事实1.任意k个数的\(gcd\)一定可以是这k个数的最小值,这里以\(k=3\)举例假设\(gcd(a_1,a_2,a_3)=m\),则\(a_1=k_1m,a_2=k_2m,a_3=k_3m\),其中\(k_1,k_2,k_3\)都是整数那么可以通过......
  • CF1174E Ehab and the Expected GCD Problem
    EhabandtheExpectedGCDProblemLuoguCF1174E题目描述\(p\)是一个排列,定义\(f(p)\):设\(g_i\)为\(p_1,p_2,\cdots,p_i\)的最大公因数(即前缀最大公因数),则\(f(p)\)为\(g_1,g_2,\cdots,g_n\)中不同的数的个数。设\(f_{max}(n)\)为\(1,2,\cdots,n\)的所有排......