首页 > 其他分享 >P4451 [国家集训队]整数的lqp拆分

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

时间:2023-06-06 15:02:33浏览次数:51  
标签:P4451 sqrt2 lqp right dfrac aligned mod 国家集训队 left

Description

\[\begin{aligned} & \sum \prod_{i=1}^m F_{a_i} \\ & m>0 \\ & a_1, a_2 \ldots a_m>0 \\ & a_1+a_2+\ldots+a_m=n \end{aligned} \]

由于答案可能非常大,所以要对 \(10^9+7\) 取模。

Solution

题目中有整数拆分的部分,可以想到用生成函数的相关知识。

设斐波那契数列的生成函数 \(F(x)=f_0+f_1x+f_2x^2+\dots\)。

那么有

\[\begin{aligned}F(x)&=f_0+f_1x+f_2x^2+f_3x^3+\dots\\xF(x)&=\ \ \ \ \ \ \ \ f_0x+f_1x^2+f_2x^3+\dots\\x^2F(x)&=\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ f_0x^2+f_1x^3+\dots\end{aligned} \]

相减可以得到 \(F(x)=\dfrac{x}{1-x-x^2}\)。

那么本题的答案序列的生成函数 \(G(x)=\sum_{m=0}^{\infty}F(x)^m\)。

因为如果拆分成 \(m\) 个数,那么每个位置上的选择的生成函数都是 \(F(x)\),相乘即可就是 \(F(x)^m\)。

\[\begin{aligned}G(x)&=\sum_{m=0}^{\infty}F(x)^m\\&=\dfrac{1}{1-F(x)}\\&=\dfrac{1}{1-\frac{x}{1-x-x^2}}\\&=\dfrac{1-x-x^2}{1-2x-x^2}\\&=1+\dfrac{x}{1-2x-x^2}\\&=1+\dfrac{x}{\left[1-(1+\sqrt2)x\right]\left[1-(1-\sqrt2)x\right]}\\&=1+\dfrac{1}{2\sqrt2}\left(\dfrac{1}{1-(1+\sqrt2)x}-\dfrac{1}{1-\left(1-\sqrt2\right)x}\right)\\&=1+\dfrac{1}{2\sqrt2}\left(\sum^{\infty}_{n=0}\left(1+\sqrt2\right)^nx^n-\sum_{n=0}^{\infty}\left(1-\sqrt2\right)^nx^n\right)\\&=1+\sum_{n=0}^{\infty}\dfrac{\sqrt2}{4}\cdot\left[\left(1+\sqrt2\right)^n-\left(1-\sqrt2\right)^n\right]x^n\end{aligned} \]

那么答案 \(ans_n=\dfrac{\sqrt2}{4}\cdot\left[\left(1+\sqrt2\right)^n-\left(1-\sqrt2\right)^n\right]\)。

另外,\(2\) 在模 \(10^9+7\) 意义下的二次剩余是 \(59713600\),换个好理解的方式,即 \(\sqrt2 \mod 10^9+7=59713600\)。

Code

#include<cstdio>
#define N 
#define mod 1000000007
#define ll long long
using namespace std;
ll n,sqrt2=59713600,ans;
ll read()
{
    ll res=0;char ch=getchar();
    while (ch<'0'||ch>'9') continue;
    while (ch>='0'&&ch<='9')
    {
        res=(res*10%(mod-1)+(ch-'0'))%(mod-1);
        ch=getchar();
    }
    return res;
}
ll ksm(ll x,ll y)
{
    ll res=1;
    while (y)
    {
        if (y&1) res=res*x%mod;
        x=x*x%mod;
        y>>=1;
    }
    return res;
}
int main()
{
    n=read();
    ans=sqrt2*ksm(4,mod-2)%mod*(ksm(sqrt2+1,n)-ksm(-sqrt2+1+mod,n)+mod)%mod;
    printf("%lld\n",ans);
    return 0;
}

标签:P4451,sqrt2,lqp,right,dfrac,aligned,mod,国家集训队,left
From: https://www.cnblogs.com/Livingston/p/17460547.html

相关文章

  • Luogu P1903 [国家集训队] 数颜色 / 维护队列
    题目来源https://www.luogu.com.cn/problem/P1903[国家集训队]数颜色/维护队列题目描述墨墨购买了一套\(N\)支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会向你发布如下指令:\(Q\L\R\)代表询问你从第\(L\)支画笔到第\(R\)支画笔中共有几种......
  • 【题解】P4464 [国家集训队] JZPKIL
    仙气飘飘莫反题。显现出了很多推式子习惯的问题。思路莫反+伯努利数+Pr。首先根据\(\operatorname{lcm}(x,y)=\frac{xy}{\gcd(x,y)}\)可以化简:\(\sum\limits......
  • P1829 [国家集训队]Crash的数字表格 / JZPTAB
    [国家集训队]Crash的数字表格/JZPTAB这个题可以低于线性,然后也可以杜教筛到\(O(n^{2/3})\)这个样子。首先暴力推:\[\begin{aligned}&\sum_{i=1}^{n}\sum_{j=1}^{......
  • P1903 [国家集训队] 数颜色 / 维护队列
    sloj.bzoj2120.数颜色题目描述墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会像你发布如下指令:1、QLR代表询问你从第L支画笔......
  • P1829 [国家集训队]Crash的数字表格 / JZPTAB
    求\[\sum^{n}_{i=1}\sum^{m}_{j=1}lcm(i,j)\]即\[\sum^{n}_{i=1}\sum^{m}_{j=1}\dfrac{ij}{\gcd(i,j)}\]即\[\sum^{\min(n,m)}_{k=1}\sum^{n}_{i=1}\s......
  • luogu P2757 [国家集训队]等差子序列
    Link题解降智了。。。首先我们不需要关心\(Len\)是多少,只需要找到长度为\(3\)的等差子序列就行了。然后就枚举中点\(mid\),看看存不存在\(l<mid<r\)使得\(a_{mi......
  • P1829 [国家集训队]Crash的数字表格 / JZPTAB
    莫比乌斯反演\(\color{red}{f(n)=\sum\limits_{d|n}g(d)\Leftrightarrowg(n)=\sum\limits_{d|n}\mu(d)f(\dfrac{n}{d})}\)\(f(n),g(n)\)均为积性函数。\(f(n)\)称为......
  • 【题解】P1527 [国家集训队]矩阵乘法(整体二分)
    [国家集训队]矩阵乘法题目描述给你一个\(n\timesn\)的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第\(k\)小数。输入格式第一行有两个整数,分别表示矩阵大小\(n......
  • luogu P4465 [国家集训队] JZPSTR
    题面传送门我真的,我哭死,如果考了我当场感谢zyq。听说std是SAM+块链,我瑟瑟发抖,然后祭出了bitset大法。据说这个是叫一种Shift-And的基于位运算的字符串匹配算法,也就是说,......
  • P4464 [国家集训队] JZPKIL 题解
    NOIP前三天,感觉绝对复习不完了的gtm1514认为已经没有什么好害怕的了,于是做起了数学题。因为摆了大烂所以只有一道。P4464[国家集训队]JZPKIL题意不再赘述。下午看......