首页 > 其他分享 >P5110 块速递推

P5110 块速递推

时间:2024-02-04 11:13:35浏览次数:23  
标签:10000 int 速递 long P5110 br SA mod

生成函数求递推通项的入门题。

不妨假设 \(\alpha = 233\),\(\beta = 666\)。

可以快速得到 \(a_i\) 的 OGF:

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

OGF 的核心式子是 \((a+b)^n\),我们考虑把分式下面化成二项式:

\[1-\alpha x - \beta x^2 = (1-Ax)(1-Bx) \Rightarrow \begin{cases}A = \frac{\alpha + k}{2} \\ B = \frac{\alpha - k}{2} \\ k = \sqrt{\alpha^2-4\beta}\end{cases} \]

然后发现上式可转化为:

\[G(X) = L(\frac{1}{1-Ax} - \frac{1}{1-Bx}),L = \frac{1}{k} \]

所以:\([x^n]G(x) = L(A^n - B^n)\)

现在还有两个问题。

  • 快速幂 \(O(\log{n})\),总时间复杂度 \(O(T\log{n})\),会时超。

使用光速幂 \(O(1)\) 解决。

具体来说,例如我们要求 \(A^{x}\)。

首先费马小定理,可以让 \(x \in [0,10^9+5]\)。

然后我们可以预处理 \(A^{10000x}\),\(x \in [0,100001]\)。

再处理 \(A^{x}\),\(x \in [0,10000]\)。

最后 \(x = 10000a + b\),用预处理的值 \(O(1)\) 计算。

  • 求 \(k\)(二次根式的逆元)

\(k = \sqrt{56953}\),只需要暴力找到 \(k^2 = 56953\)。求得 \(k = 188305837\)。

#include <bits/stdc++.h>
#define int unsigned long long
const int mod = 1e9 + 7;
using namespace std;
namespace Mker
{
    unsigned long long SA, SB, SC;
    void init() { scanf("%llu%llu%llu", &SA, &SB, &SC); }
    unsigned long long rand()
    {
        SA ^= SA << 32, SA ^= SA >> 13, SA ^= SA << 1;
        unsigned long long t = SA;
        SA = SB, SB = SC, SC ^= t ^ SA;
        return SC;
    }
}
int T;
int fpow(int a, int b)
{
    int r = 1;
    while (b)
    {
        if (b & 1)
            r = r * a % mod;
        a = a * a % mod;
        b >>= 1;
    }
    return r % mod;
}
int ans;
int ab[100005], bb[100005], ar[10005], br[10005];
int apow(int b)
{
    return ab[b / 10000] * ar[b % 10000] % mod;
}
int bpow(int b)
{
    return bb[b / 10000] * br[b % 10000] % mod;
}
signed main()
{
    scanf("%llu", &T);
    Mker::init();
    int inv = fpow(2, mod - 2);
    int sqrdelta = 188305837;
    int A = (233 + sqrdelta) % mod * inv % mod;
    int B = (233 - sqrdelta + mod) % mod * inv % mod;
    int k = fpow(sqrdelta, mod - 2);
    ar[0] = ab[0] = bb[0] = br[0] = 1;
    for (int i = 1; i < 10000; i++)
    {
        ar[i] = ar[i - 1] * A % mod;
        br[i] = br[i - 1] * B % mod;
    }
    ab[1] = ar[9999] * A % mod;
    bb[1] = br[9999] * B % mod;
    for (int i = 2; i <= 100001; i++)
    {
        ab[i] = ab[i - 1] * ab[1] % mod;
        bb[i] = bb[i - 1] * bb[1] % mod;
    }
    while (T--)
    {
        int n = Mker::rand();
        n %= mod-1;
        if (n <= 1)
        {
            ans ^= n;
        }
        else
        {
            ans ^= (apow(n) - bpow(n) + mod) % mod * k % mod;
        }
    }
    cout << ans;
    return 0;
}

标签:10000,int,速递,long,P5110,br,SA,mod
From: https://www.cnblogs.com/AysctLucky/p/18005809

相关文章

  • Microsoft 365 新功能速递:Microsoft Teams(Premium版本)Watermark支持录制播放
    51CTO博客链接:https://blog.51cto.com/u_13637423Microsoft将在2024年2月份推出TeamsMeeting录制的视频应用水印功能,在会议录制播放过程中,电子邮件ID将显示为水印。会议结束后,用户可以在网络和移动平台上访问录制的内容,观看带有水印的录制。说明:水印功能需要TeamsPremium许可证。......
  • Microsoft 365 新功能速递:Microsoft 365 Apps中在Share Control选择要邀请的人
    51CTOBlog地址:https://blog.51cto.com/u_13969817Microsoft将在2024年2月初发布新的Inviteflow更新发送电子邮件体验,而不是发送共享链接。以往,使用“发送电子邮件”的客户在点击“发送”按钮后会认为他们可能过度共享了。这一变化有助于在与他人共享文件时更好地符合客户的期望,帮......
  • Microsoft 365 新功能速递:Microsoft 365 Data loss prevention simulation mode
    51CTOBlog地址:https://blog.51cto.com/u_13969817预计2024年2月底,Microsoft365将推出DLP的新功能:Simulationmode ,可以为DLP管理员提供了一种独立的体验,可以尝试DLP策略,评估其影响,并建立对策略有效性的信心,从而最终减少策略执行的时间。Simulationmode 是对现有测试模式行为......
  • Microsoft 365 新功能速递:Teams即将发布一线运营层次结构功能
    51CTOBlog地址:https://blog.51cto.com/u_13969817微软将在2024年1月份发布FrontlineOperationalHierarchy新功能,将使管理员能够将其组织的一线团队/地点结构映射到团队管理中心的层次结构。管理员可以为每个团队/地点定义从部门信息到品牌信息元数据的元数据。操作层次结构与此......
  • Microsoft 365 新功能速递:数据丢失预防和信息保护策略和标签的仅查看模式
    51CTO博客链接:https://blog.51cto.com/u_13637423微软将于2024年2月推出新功能数据丢失预防和信息保护策略和标签的仅查看模式,此功能允许具有仅查看受限权限的管理员查看数据丢失预防和信息保护策略配置的详细信息,而无需编辑策略或标签配置。这将如何影响您的组织:1.     为管......
  • Microsoft 365 新功能速递:脱机时使用 OneDrive Web 应用
    51CTO博客链接:https://blog.51cto.com/u_13637423微软将于2024年2月中旬开始逐步推出,预计将于2024年4月中旬完成,在运行OneDrive同步应用程序的Windows和macOS设备上,我们将启用一项名为“脱机模式”的新功能,即使您处于脱机状态,也可以继续在浏览器、OneDrivePWA(Progressivewebapp)......
  • Microsoft 365 新功能速递:通信合规性–检测Copilot for Microsoft 365交互模板
    51CTO博客链接:https://blog.51cto.com/u_13637423即将推出的MicrosoftPurviewCommunicationCompliance是一个新模板,专门用于分析所有CopilotforMicrosoft365提示和响应,预计在2024年1月底正式发布。CommunicationCompliance正在引入一个新模板,专门用于分析所有CopilotforMi......
  • Microsoft 365 新功能速递:Microsoft EdgeManagement中的企业安全人工智能控件
    51CTO博客链接:https://blog.51cto.com/u_13637423Microsoft在1月9日发布了MicrosoftEdgeManagementService预览版,是在Microsoft365管理中心为MicrosoftEdge提供的一种新的、专用的、简化的管理体验。MicrosoftEdgeManagementService中的企业安全人工智能控制现在正在推出,以供......
  • Microsoft 365 新功能速递:为Microsoft Entra ID中的设备绑定密钥(更改为FIDO2和Windows
    51CTO博客链接:https://blog.51cto.com/u_13637423从2024年2月中旬开始,除了现有的FIDO2安全密钥支持外,MicrosoftEntraID还将支持存储在计算机和移动设备上的设备绑定密钥,作为预览中的身份验证方法。这使您的用户能够使用现有设备执行防钓鱼身份验证。我们将扩展现有的FIDO2身份验......
  • Microsoft 365 新功能速递:如何用Powershell为SPO文件夹设置不同颜色
    51CTOBlog地址:https://blog.51cto.com/u_13969817微软最近推出了一项新功能,允许用户在SharePointOnline和OneDrive中使用预设的16种颜色为文件夹上色。此功能适用于新文件夹和现有文件夹。现在,用户可以使用不同的颜色自定义文件夹,以便更好地管理文件,比如:·      提供工作......