首页 > 其他分享 >闲话 22.10.24

闲话 22.10.24

时间:2022-10-24 20:59:42浏览次数:86  
标签:24 frac 数列 int 闲话 2x sqrt 22.10 递推

闲话

晚上在外面逛了几圈
所以今天的闲话发得比较的晚

感觉生活水平需要提升于是在找游戏人生的壁纸(
所以有好心人投喂几张吗(

今日模拟赛有交互题
“不保证评测交互库和下发交互库相同”
然后可以直接调用交互库里的函数
连namespace的名称都没改
连变量名都没改
三行就能ac是吧

[今天脑内循环的还是Aster 很推荐去看看!]
[霓虹的世界……]

杂题

好在我还留了一道题没写
要不然没东西可写了(

[国家集训队]整数的lqp拆分

定义 \(N\) 的整数拆分为满足 \(\sum_{i=1}^n a_i = N \text{ s.t. } a_i > 0\) 的有序序列 \(a_i\)。定义一个 \(N\) 的整数拆分 \(a_i\) 的权值为 \(\prod_{i=1}^n F_{a_i}\),其中 \(F_i\) 为斐波那契数列,满足 \(F_0 = 0, F_1 = 1, F_i = F_{i-1} + F_{i-2}\)。

给定 \(N\),求其整数拆分权值之和对 \(10^9+7\) 取模的值。

\(N \le 10^{10000}\)。

某人无意识中出了这题的弱化版。所以写了。

通过长时间的研究我们发现了计算对于 \(n\) 的整数拆分的总数有一个很简单的递推式,但是因为这个递推式实在太简单了,如果出这样的题目,大家会对比赛毫无兴趣的。
- 来自题面

其实确实。

我们考虑先生成这个 \(n\) 的整数拆分的总数。假设 \([x^n]F(x)\) 为答案,不难发现我们可以将其拆分为由 \(i\) 个整数生成的方案数的总和。当前是由全体正整数生成,因此立得

\[F(x) = \sum_{i=0}^{\infty} \left(\frac 1{1-x}\right) ^ i = \frac{1}{1 - \frac{1}{1-x}} \]

然后自然推广得到假设用数列 \(G(x)\) 来取 \(n\) 的拆分数,若 \([x^n]F(x)\) 为答案则有

\[F(x) = \frac 1{1-G(x)} \]

回到题目。由斐波那契数列的递推式不难得到斐波那契数列的生成函数

\[G(x) = \frac{x}{1 - x - x^2} \]

因此有答案数列

\[F(x) = \frac 1{1-G(x)} = \frac{1 - x - x^2} {1-2x-x^2} \]

到这里有两种做法(

1. 直接做

我们不难得到分母 \(\frac 1 {1 - 2x - x^2}\) 对应数列 \(a_i\) 的递推式:

\[a_n = 2a_{n-1} + a_{n-2} \]

考虑分子的贡献:

\[a_{ans} = a_n - a_{n-1} - a_{n-2} = a_{n-1} \]

因此得到答案的递推式,直接做矩乘就是 \(O(\log n)\) 的。但是还可以接着推。

考虑斐波那契数列通项公式的求法。我们设 \(a_n = pa_{n-1}\),得到

\[p^2 a_{n-2} - 2pa_{n-2} - a_{n-2} = 0 \]

解得

\[p = 1\pm \sqrt 2 \]

直接设

\[a_n = c_1(1 - \sqrt 2) ^n + c_2(1 + \sqrt 2)^n \]

带入特值能得到

\[\begin {aligned}\left\{\begin {aligned}c_1 = \frac{\sqrt 2 - 1}{2\sqrt 2} \\ c_2 = \frac{\sqrt 2 + 1}{2 \sqrt 2}\end{aligned}\right.\end{aligned} \]

整理得到

\[a_n = \frac {\sqrt 2} 4\left( (1+ \sqrt 2)^{n+1} - (1 - \sqrt 2)^{n+1} \right) \]

考虑 \(x^2 \equiv 2 \pmod{10^9 + 7}\) 的解。扔进什么板子里能得到 \(x =59713600\)。带入计算就可以 \(O(\log n)\) 求解。

答案减一即可。

2. 部分分式分解

\[\frac{1 - x - x^2} {1-2x-x^2} = 1 + \frac{x} {1-2x-x^2} \]

根据部分分式定理,考虑待定系数得到

\[\frac{x} {1-2x-x^2} = \frac A{1 - px} + \frac B{1-qx} = \frac{(A+B) + (Aq + bP) x}{1 - (p+q)x + pqx^2} \]

然后就是一通对比系数。这部分是 dirty work,总而言之我们能得到

\[\frac{x} {1-2x-x^2} = \frac {\sqrt 2}4 \left( \frac {1}{1 - (1 + \sqrt 2)x} - \frac{1}{1 - (1 - \sqrt 2)x} \right) \]

化简可以得到和 1. 相同的结论。

于是我们得到了递推式。在读入时将 \(n\) 对 \(10^9 + 6\) 取模即可。

code
#include <bits/stdc++.h>
using namespace std;
#define int long long
#ifdef ONLINE_JUDGE
    char buf[1<<21], *p1 = buf, *p2 = buf;  inline char getc() { return (p1 == p2 and (p2 = (p1 = buf) + fread(buf, 1, 1<<21, stdin), p1 == p2) ? EOF : *p1++); }
    #define getchar getc
#endif
#define rep(i,a,b) for (register int i = (a), i##_ = (b) + 1; i < i##_; ++i)
#define pre(i,a,b) for (register int i = (a), i##_ = (b) - 1; i > i##_; --i)
const int mod = 1e9 + 7, phi_m = mod - 1, sqrt_2 = 59713600;
int n;
int qp(int a, int b) { int ret = 1; for (; b; a = 1ll * a * a % mod, b >>= 1) if (b & 1) ret = 1ll * ret * a % mod; return ret; }

signed main() {
	char c; while (isdigit(c = getchar())) n = (1ll * n * 10 + c - '0') % phi_m;
	cout << 1ll * sqrt_2 * 250000002 % mod * (qp(sqrt_2 + 1, n) - qp(1 - sqrt_2 + mod, n) + mod) % mod;
}

标签:24,frac,数列,int,闲话,2x,sqrt,22.10,递推
From: https://www.cnblogs.com/joke3579/p/chitchat221024.html

相关文章

  • 2022/10/24 考试
    又爆了/kk虽然T2考试时没有做出来,但是因为这纯粹是我脑瘫,就不写了。比赛链接T3Desciption给出\(n\)个集合,有\(m\)次操作,如下:给出\(l,r,c\),往\([l,r]\)这......
  • 10.24解题报告
    T1用时:约\(100\)min这个题用的时间最多,主要原因还是想多了,应该注意多观察一下题目性质:题目要求求出这个式子的正整数解个数:\(\frac{a}{x}+\frac{b}{c}=\frac{d}{y}\)......
  • 【2022-10-24】前端Vue框架(一)
    前端发展介绍1.HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面->给后端(PHP、Python、Go、Java)->后端嵌入模板语法->后端渲染完数据->返回数据给前端-......
  • 2022/10/24 总结
    写在最前面今天考试首先是时间安排不很合理。花了相对较多的时间来推T2,以至于没有时间检查其他题的暴力。以后考试如果有时间就把想到的思路尽量都写一下(比如今日T1,思......
  • DevOps|1024程序员节怎么做?介绍下我的思路
    1024,祝每个程序员小哥哥小姐姐节日快乐。因为在研发效能部门,我支持过几次1024程序员节的活动,所以经常有朋友问我1024程序员节怎么做,本篇就是简单介绍下我的思路,希望对......
  • 2022.10.24每日一题
    路径计数题目描述有一个\(n×n\)的网格,有些格子是可以通行的,有些格子是障碍。一开始你在左上角的位置,你可以每一步往下或者往右走,问有多少种走到右下角的方案。由于......
  • 20221024 英文单词
    Iscoffeegoodorbadforyourhealth?https://www.hsph.harvard.edu/news/hsph-in-the-news/is-coffee-good-or-bad-for-your-health/1、teamwork  2、virtually......
  • leetcode 2448
    首先需要这个结论.  而这里a_iai​为任意正整数,我们便可以直接将其**拆为**a_iai​个系数为11的绝对值表达式的和。接下来只需要考虑全体的中位数即可(采......
  • 补题记录(2022.10)
    补题记录2022ShanghaiCollegiateProgrammingContest(2022上海省赛)B-带权并查集+差分约束C-数学、贪心E-dp或ch表转移L-字符串哈希(已过,2000ms)orAC自动机......
  • serialportscreen-2022-10-24
    1、当数据变量存在2位整数+1位小数、2整+0小、3整+1小、1整+0小、3整+0小混杂在一起显示时,并且显示格式都选择为了居中,会发现显示效果参差不齐,一开始以为是控件的位置在鼠......