[数论][二项式定理][矩阵乘法] BZOJ 3328: PYXFIB

DRAM内存模拟持久化设备的方法 由于持久化内存介质NVM技术的发展,越来越多的科研工作者投身到NVM相关的研究当中。但由于目前工业界并没有推出广泛使用的NVM介质设备,所以科研工作都需要自己以现有的条件,模拟NVM设备使用场景。一个简单的方法是:通过修改DRAM模拟器,达到模拟NVM的目的(可以参考:DRAMSim2模拟器分析与应用)。更高端的方式是:在真实系统中,将内存划分出一块儿,用来模拟NVM设备(类似于传统的ramdis 阅读详情

Description

求

∑i=0⌊nk⌋(nik)Fik
1≤n≤1018,1≤k≤2×104,p为质数且pmodk=1

Solution

设g为p的原根,ω=gp−1k。

F=(1110)

∑i=0⌊nk⌋(nik)Fik====∑i=1n(ni)Fi[k∣i]1k∑i=0n(ni)Fi∑j=0k−1ωij1k∑j=0k−1ωjn∑i=0n(ni)Fi(ω−j)n−i1k∑j=0k−1ωjn(F+ω−jI)n

剩下的东西矩阵快速幂搞一搞就好啦。
#include <bits/stdc++.h>
using namespace std;

const int N = 202020;
typedef long long ll;

int test;
ll n;
int k, P, g, w, Iw, Ppcnt, Ik;
struct Matrix {
    int a[3][3];
    Matrix(void) {
    }
    inline int *operator [](int x) {
        return a[x];
    }
    inline friend Matrix operator *(Matrix a, Matrix b) {
        Matrix res;
        for (int i = 1; i <= 2; i++)
            for (int j = 1; j <= 2; j++) {
                res[i][j] = 0;
                for (int k = 1; k <= 2; k++) {
                    res[i][j] += (ll)a[i][k] * b[k][j] % P;
                    while (res[i][j] >= P) res[i][j] -= P;
                }
            }
        return res;
    }
    inline friend Matrix operator *(int a, Matrix b) {
        for (int i = 1; i <= 2; i++)
            for (int j = 1; j <= 2; j++)
                b[i][j] = (ll)b[i][j] * a % P;
        return b;
    }
    inline friend Matrix operator *(Matrix a, int b) {
        return b * a;
    }
    inline friend Matrix operator +(Matrix a, Matrix b) {
        for (int i = 1; i <= 2; i++)
            for (int j = 1; j <= 2; j++) {
                a[i][j] += b[i][j];
                while (a[i][j] >= P) a[i][j] -= P;
            }
        return a;
    }
};
Matrix I, A, Ans, O;
int pp[N];

inline void Add(int &x, int a) {
    x += a; while (x >= P) x -= P;
}
inline int Pow(int a, ll b) {
    int c = 1;
    while (b) {
        if (b & 1) c = (ll)c * a % P;
        b >>= 1; a = (ll)a * a % P;
    }
    return c;
}
inline int Inv(int x) {
    return Pow(x, P - 2);
}
inline Matrix Pow(Matrix a, ll b) {
    Matrix c = I;
    while (b) {
        if (b & 1) c = c * a;
        b >>= 1; a = a * a;
    }
    return c;
}
inline int PRoot(int P) {
    if (P == 3) return 2;
    int phi = P - 1;
    double m = sqrt(phi);
    Ppcnt = 0;
    for (int i = 2; i <= m; i++)
        if (phi % i == 0) {
            pp[++Ppcnt] = i;
            if (phi / i > i) pp[++Ppcnt] = phi / i;
        }
    for (int g = 2; ; g++) {
        for (int i = 1; i <= Ppcnt; i++)
            if (Pow(g, pp[i]) == 1) break;
            else if (i == Ppcnt) return g;
    }
}
inline Matrix F(int x) {
    return Pow(Inv(x), n) * Pow(x * I + A, n);
}

int main(void) {
    freopen("1.in", "r", stdin);
    scanf("%d", &test);
    I[1][1] = I[2][2] = 1;
    A[1][1] = A[1][2] = A[2][1] = 1;
    while (test--) {
        scanf("%lld%d%d", &n, &k, &P);
        Ans = O; g = PRoot(P);
        w = Pow(g, (P - 1) / k); Iw = Inv(w);
        for (int i = 0; i < k; i++)
            Ans = Ans + F(Pow(Iw, i));
        Ans = Ans * Inv(k);
        printf("%d\n", Ans[1][1]);
    }
    return 0;
}
第42篇FEDGLOSS算法BEYOND LOCAL SHARPNESS:COMMUNICATION-EFFICIENT GLOBALSHARPNESS-AWARE MINIMIZATIONFOR :用上一轮伪梯度最小化锐度,获取与全局损失最相关的几何信息,引导全局优化趋向更平坦的最小值。效果对比分析:FEDGLOss。 阅读详情

相关推荐

SAP MTO实战:从销售订单到生产订单的精准触发与配置详解

本文深入解析SAP系统中按订单生产(MTO)模式的核心流程与配置。详细阐述了如何通过精准配置物料主数据策略组、需求类型及计划策略(如策略50),实现从销售订单自动触发生产订单的完整链路。文章结合实战案例,指导用户打通销售与生产环节,并提供了关键事务代码与常见问题排查指南,助力企业实现以销定产,优化库存与成本控制。

weixin_29300931的博客 212

矩阵相乘详解

首先要知道矩阵是怎么相乘的 首先,两个矩阵要是想相乘需要满足,第一个矩阵的列数等于第二个矩阵的行数 满足的话就可以相乘得到新的矩阵了 举个例子嗷: 矩阵a: 1 2 3 3 2 2 2 1 2 矩阵b: 2 2 3 1 2 1 a矩阵是3 * 3(3行3列)的矩阵,b矩阵是3 * 2(3行2列)的矩阵,满足第一个矩阵的列数等于第二个矩阵的行数。那我们就可以相乘了 一个m*n的矩阵和一个...

wmy0217_的博客 22万+

用HFSS复现经典论文:从零搭建带孔缝屏蔽箱体模型(附完整建模步骤与避坑指南)

本文详细介绍了如何使用HFSS电磁仿真软件复现经典论文中的带孔缝屏蔽箱体模型,包括从零搭建模型、设置激励与边界条件、求解优化及结果验证的全过程。特别提供了建模中的布尔运算陷阱、激励设置技巧等实操难点的避坑指南,帮助工程师和学生深入理解电磁屏蔽效能研究。

weixin_30530339的博客 157

笔记之矩阵二项式展开

针对矩阵特征根的推广二项式展开

wubyatseu的专栏 6343

CentOS7下快速修复libssl.so.1.1缺失问题(附腾讯云镜像加速下载)

本文详细介绍了在CentOS7系统中快速修复libssl.so.1.1缺失问题的工程化实践方案。通过编译安装OpenSSL 1.1.x版本、配置动态链接器及创建符号链接等步骤,有效解决共享对象文件缺失问题,并提供了腾讯云镜像加速下载的优化方案,帮助开发者高效部署现代应用。

weixin_33711647的博客 367

OpenHarmony 5.1 RK3568 开发板烧录:从源码编译到镜像写入的 6 步实战

本文详细解析了OpenHarmony 5.1在RK3568开发板上的全链路开发流程,包括环境搭建、源码编译、镜像烧录等6个关键步骤。通过实战指南和避坑技巧,帮助开发者快速掌握OpenHarmony系统的烧录与定制能力,提升物联网设备开发效率。

weixin_33722405的博客 343

概率论得学习整理--番外3:二项式定理和 二项式系数

二项式定理, 二项式系数之和, 二项式系数得意义

奔跑的犀牛先生 2961

用C++手把手教你连接SimNow期货模拟盘:从CTP API封装到第一个订单(附完整代码)

本文详细介绍了如何使用C++连接SimNow期货模拟盘,从CTP API的基础架构解析到实现第一个订单的完整流程。内容涵盖CTP API的封装、SimNow环境配置、交易通道实现、行情接收与处理等核心环节,并提供完整代码示例,帮助开发者快速掌握量化交易中的期货模拟盘连接技术。

weixin_27215337的博客 328

【数论基础】—— 二项式定理

(x+y)n=∑k=0n(nk)xn−kyk (x + y)^n = \sum_{k=0}^{n} \begin{pmatrix} n \\ k \end{pmatrix} x^{n-k}y^k (x+y)n=k=0∑n​(nk​)xn−kyk式子的理解比较简单(x+y)n=(x+y)×(x+y)×(x+y)×⋯×(x+y) (x + y)^n = (x + y) \times (x + y) \times (x + y) \times \cdots \times (x + y) (x+y)n=(x+y)×

Brain_Gym的博客 2295

POCV/SOCV 、LVF的差别

1.POCV与OCV、AOCV 为了模拟片上PVT的差异带来的影响,最早提出了OCV(On Chip Variation)给每个cell都设置一个固定的derate值,来覆盖最悲观的情况,但是随着工艺发展,设计规模增大,OCV过度的悲观开始限制性能,于是又有了AOCV(Advanced On Chip Variation),用基于depth和distance的derate来取代单一的全局的derate值,但时序收敛的过程中逻辑级数depth的变化让时序分析的时间变得非常长,由此POCV诞生了。 POCV

m0_61544122的博客 5361

计算机组成原理(第三版)唐朔飞-第五章输入输出系统-课后习题

计算机组成原理(第三版)唐朔飞-第五章输入输出系统-课后习题

weixin_45735391的博客 6万+

二项式定理

将x+y的任意次幂展开成和的形式: 每一个乘坐二项式系数的特定正整数,其等于 。这个公式称为二项式公式或二项式定理。把它写作 理解为组合形式,n为总数,取0个。 概率分布列表:https://en.wikipedia.org/wiki/List_of_probability_distributions   额外的补充: powf(a,b)      计算a 的b次幂  a...

lgyuWT的博客 2636

AOSP 8.0.0编译中的ANDROID_DATA缺失问题解决方案

在AOSP编译过程中,环境变量和路径设置的正确性至关重要。遇到相关的错误时,检查并修正环境配置通常是解决问题的关键。希望本文提供的分析和解决方案能帮助你顺利编译AOSP。

m0_74337424的博客 397

【BZOJ3328】PYXFIB 数论+矩阵乘法

【BZOJ3328】PYXFIB Description Input 第一行一个正整数,表示数据组数据 ,接下来T行每行三个正整数N,K,P Output T行,每行输出一个整数,表示结果 Sample Input 1 1 2 3 Sample Output 1 HINT 题解:首先看到斐...

aodanchui1057的博客 182

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

[BZOJ3328]PYXFIB

PYXFIB 题解 一看就是一道的数论题。谁都知道 至于斐波拉契的做法应该都知道,用一个的矩阵就可以处理了。 关键是如何解决前面那个组合数呢? 通过这个式子,很容易想到二项式展开定理。 针对矩阵肯定也是成立的,,(为单位矩阵)。 不过我们还需判断,这样就与原式等价了。 我们现在的目的是构造一个数组使得满足。 g为p的原根,w为p的单位根即。那么当且仅当在模p的意义下。所以只有在时...

StaroForgin的博客 269

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

二项式定理以及证明过程

摘要:二项式定理公式为$(a+b)^n=\sum_{k=0}^n\binom{n}{k}a^{n-k}b^k$。证明过程通过多项式乘法展开,说明各项系数$\binom{n}{k}$表示$a$和$b$的不同组合方式。以$(a+b)^3$为例,展示了$a$和$b$的各类组合及其对应系数。最终推导出一般形式,其中$\binom{n}{k}$代表$a^{n-k}b^k$项的出现次数。

qq_37293230的博客 2067

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

二项式定理等价变换与简单推论

本文主要有关二项式定理的有个相关证明。

2889

二项式定理及其广义形式详解

二项式定理是代数中最基本的恒等式之一,可通过组合学或数学归纳法证明。广义二项式定理将 (a) 从正整数扩展到实数(或复数),结合无穷级数理念,要求 (\lvert x \rvert < 1) 时收敛。二者广泛应用于组合数学、概率统计、分析学以及物理工程领域。在各种需要展开和近似的场合,都是重要的工具。希望通过本文的介绍,读者能加深对二项式定理和广义二项式定理的理解,掌握其证明思路和各种扩展应用,在更广泛的数学场景下熟练运用这两大定理。

aichitang2024的博客 3598

C++二项式定理:原理、实现与应用

C++二项式定理:原理、实现与应用。

2401_90042730的博客 1979

【线性代数】矩阵及其特性

矩阵及其特性:特征值,奇异值,二次型理论

Can__er的博客 8602

从零开始的计网学习——计算机网络概述(计网入门就看这篇!)

计算机网络不论是就业还是升学都是核心的一门课程,一起从零开始,学习计算机网络!

Nimrod__的博客 13万+
上一篇: [数论][莫比乌斯反演] BZOJ 4816: 数字表格
下一篇: [DP决策单调性][分治] CF 868F. Yet Another Minimization Problem
Vectorxj
博客等级 码龄11年 35粉丝 231原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值