首页 > 其他分享 >费马定理以及逆元预处理

费马定理以及逆元预处理

时间:2025-01-19 13:54:30浏览次数:1  
标签:result 费马 int 逆元 invFact base long 预处理 MOD

#include <bits/stdc++.h>
using namespace std;

static const int MOD = 1000000007;

// 预先全局存放阶乘与逆阶乘的数组
static const int MAXN = 100000;  // 根据题意,n最多10^5
long long fact[MAXN+1], invFact[MAXN+1];

// 快速幂,用于求 x^y % MOD
long long fastPow(long long base, long long exp) {
    long long result = 1 % MOD;
    base = base % MOD;
    while (exp > 0) {
        if (exp & 1) result = (result * base) % MOD;
        base = (base * base) % MOD;
        exp >>= 1;
    }
    return result;
}

// 预计算 factorial 和 invFactorial
// fact[i] = i! % MOD
// invFact[i] = (i!)^(-1) % MOD
void precomputeFactorials(int n) {
    fact[0] = 1;
    for (int i = 1; i <= n; i++) {
        fact[i] = fact[i-1] * i % MOD;
    }
    invFact[n] = fastPow(fact[n], MOD-2);  // 使用费马小定理求逆
    for (int i = n-1; i >= 0; i--) {
        invFact[i] = invFact[i+1] * (i+1) % MOD;
    }
}

// 计算组合数 C(n, r) = n! / (r! * (n-r)!)
long long binomial(int n, int r) {
    if (r < 0 || r > n) return 0;
    return fact[n] * invFact[r] % MOD * invFact[n-r] % MOD;
}

标签:result,费马,int,逆元,invFact,base,long,预处理,MOD
From: https://www.cnblogs.com/zsh260439/p/18679534

相关文章

  • 如何在仿真分析,预测中 应用风力发电、光伏发电数据、用电负荷数据集,构建一个全面的时
    风力发电、光伏发电数据、用电负荷数据集,用于仿真分析,预测等。[1]光伏数据,光伏出力年光伏数据集,包含光伏发电功率、多种类型光照辐射强度数据(DNI,DHI,GHI),附带多种数据,可用于光伏场景生成与缩减、光伏特性分析、光伏优化调度等。[2]光伏预测功率数据2007-2020光伏预测功......
  • 你知道css的预处理器和后处理器都有哪些吗?它们有什么区别呢?
    CSS的预处理器和后处理器在前端开发中扮演着重要的角色,它们能够增强CSS的功能,提高开发效率。以下是关于CSS预处理器和后处理器的详细介绍:一、CSS预处理器CSS预处理器定义了一种新的语言,这种语言为CSS增加了编程的特性,如变量、嵌套规则、混合(mixin)等。开发者可以使用这种语言进......
  • C语言-预处理命令
    1、预处理命令是以# 开头的指令        用于在编译前对源代码进行一些处理2、与#号相关的代码    1、#include                用于在源代码中引入其他文件。可以引入标准库的头文件,也可以引入自定义的头              ......
  • (14-4)基于Latent Diffusion Transformer的文生视频系统:视频数据的预处理和增强
    6.4.5 视频数据的预处理和增强文件video_transforms.py主要实现了视频数据的预处理和增强功能,包括对视频帧的随机裁剪、中心裁剪、尺度调整、归一化、随机水平翻转等操作。通过自定义的多种预处理类,例如RandomCropVideo、CenterCropVideo和NormalizeVideo,可以对输入的视......
  • 文本预处理是指在将文本数据用于模型训练或分析之前,对其进行的一系列清洗、转换和处理
    文本预处理是指在将文本数据用于模型训练或分析之前,对其进行的一系列清洗、转换和处理操作。这些操作旨在消除文本中的噪声和不必要的信息,并将其转化为适合后续处理的格式。以下是文本预处理的一些常见方法:一、文本清洗去除HTML标记和特殊字符:移除文本中的HTML标签(如、等)......
  • C语言程序环境和预处理详解
    本章重点:程序的翻译环境程序的执行环境详解:C语言程序的编译+链接预定义符号介绍预处理指令#define宏和函数的对比预处理操作符#和##的介绍命令定义预处理指令#include预处理指令#undef条件编译 程序的翻译环境和执行环境在ANSIC的任何一种实现中,存在......
  • 乘法逆元学习笔记
    前言在讲中国剩余定理的时候,没有系统性的讲一遍乘法逆元,所以有了这一期专栏。定义如果有一个线性同余方程\(ax\equiv1\pmod{p}\),则称\(x\)为\(a\equivp\)的乘法逆元。记作\(a^{-1}\)。但是,只有当\(\gcd(a,p)=1\)时,乘法逆元才存在。求乘法逆元费马小定理如果\(\gc......
  • SRCNN数据预处理
    #判断某个文件是否是图像#enswith判断是否以指定的.png,.jpg,.jpeg结尾的字符串#可以根据情况扩充图像类型,加入.bmp、.tif等defis_image_file(filename):returnany(filename.endswith(extension)forextensionin[".png",".jpg",".jpeg"])#读取图像转为YCbCr......
  • Dexcap复现代码数据预处理全流程(五)——demo_create_hdf5.py
    此脚本的主要目的是从此前处理的数据集目录中读取多个子目录(每个子目录也是一个独立的数据集),对数据进行处理,并将处理后的数据保存到HDF5文件中1库引用fromdataset_utilsimport*2 指定数据集路径#定义原始数据集的主目录路径#需要替换[PATH_TO_RAW_DATA_DOWNL......
  • 蓝桥20034-幸福饺子馆 找规律/组合数学/逆元
    https://www.lanqiao.cn/problems/20034/learning/?page=1&first_category_id=1点击查看代码'''找规律在组合中存在对称性,即递增的位置对称,如111311231133122312331333一共存在K种组合,则[L,R]中的数字会平分K*(N-2)次出现,然后L,R会各自再出......