当前位置: 首页 > backend >正文

费马小定理

定义

a a a p p p 互质(即 gcd ⁡ ( a , p ) = 1 \gcd(a,p)=1 gcd(a,p)=1),则:
a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1\pmod p ap11(modp)
根据上述公式我们还可以推出一个公式:
a p − 2 ≡ a − 1 ( m o d p ) a^{p-2}\equiv a^{-1}\pmod p ap2a1(modp)

使用条件: p p p 需为质数。

也就是逆元。

常用来解决有除法且需要取模的问题(除法不能取模)。

应用

P10792 『SpOI - R1』笑起来最帅的小孩

期望+逆元。

比如说我们有 1 1 1 2 2 2 2 2 2 1 1 1,考虑所有情况:

112
112
121
121
211
211

加起来为 888 888 888

数据小的情况可以直接手动例举,但如果数据大了呢?

考虑直接计算每一位的贡献。

比如说第一个 1 1 1 在各位上的贡献为 2 ! 2! 2!,十位为 10 × 2 ! 10\times 2! 10×2!,百位为……

总共贡献: 111 × 2 ! 111\times 2! 111×2!

( 1 0 n − 1 ) × 2 ! (10^n-1)\times 2! (10n1)×2!

n n n 表示数列的长度。

以此类推,所有数字的贡献总和为:
( ∑ i = 1 k x i × l i ) × ( 1 0 n − 1 ) × ( n − 1 ) ! (\sum_{i=1}^k x_i\times l_i)\times (10^n-1)\times (n-1)! (i=1kxi×li)×(10n1)×(n1)!

然后还要对贡献和除以 n ! n! n!,公式为:
( ∑ i = 1 k x i × l i ) × ( 1 0 n − 1 ) n \frac{(\sum_{i=1}^k x_i\times l_i)\times (10^n-1)}{n} n(i=1kxi×li)×(10n1)
接下来用逆元解决就好了。

实现

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int mod=2007072007;
int t,k,x[100005],l[100005];
int kpow(int a,int b){int sum=1;while(b){if(b&1){sum=(sum*a)%mod;}a=(a*a)%mod;b/=2;}return sum;
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);for(cin>>t;t;t--){cin>>k;int n=0,sum=0;for(int i=1;i<=k;i++){cin>>x[i]>>l[i];n=(n+l[i])%mod,sum=(sum+x[i]*l[i])%mod;}cout<<(((((sum*(kpow(10,n)-1))%mod)*kpow(9,mod-2))%mod)*kpow(n,mod-2))%mod<<'\n';}return 0;
}
http://www.xdnf.cn/news/7002.html

相关文章:

  • 数学复习笔记 16
  • 【Linux网络编程】Socket编程:协议理论入门
  • 数据库的规范化设计方法---3种范式
  • AIStarter Windows 版本迎来重磅更新!模型插件工作流上线,支持 Ollama / ComfyUI 等多平台本地部署模型统一管理
  • FPC连接器的未来趋势:柔性时代的核心桥梁
  • 【Redis】Hash 哈希
  • opencv4.11生成ArUco标记 ArUco Marker
  • IP68防水Type-C连接器实测:水下1米浸泡72小时的生存挑战
  • CodeBuddy 开发 JSON 可视化工具实录:JsonVision 的诞生之旅
  • 广东省省考备考(第十三天5.17)——言语:接语选择题(听课后强化练习)
  • 永磁同步电机公式总结——反电动势、磁链、转矩公式;三项、两项电压方程;坐标表换方程
  • 通过多线程获取VENC的H264码流数据
  • 11.1 LangGraph生产级AI Agent开发:状态管理与多智能体系统构建全解析
  • RAID学习笔记
  • USB和串口软件编程控制继电器通断
  • windows系统各版本下载
  • 查看电脑信息的方法-CPU核心数量、线程数量等
  • TXT记录解析技术深度解析与应用实践
  • 医疗大模型技术演进与行业应用全景
  • 在Java中调用Ant命令
  • 动态规划(3)学习方法论:构建思维模型
  • CSP 2024 提高级第一轮(CSP-S 2024)单选题解析
  • 利用SenseGlove触觉手套开发XR手术训练体验
  • profibusDP主站转profinet网关接ABB电机保护单元与1200plc通讯
  • 初探Linux内核:解锁Linux操作系统的基本核心的奥秘
  • StreamCap v0.0.1 直播录制工具 支持批量录制和直播监控
  • 数学复习笔记 17
  • arm-linux平台通过syslog + logrotate + 脚本实现日志管理
  • 互联网大厂Java求职面试:AI驱动的短视频直播平台架构设计
  • 笔试模拟 day7