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

【普及+/提高】洛谷P2613 ——【模板】有理数取余

见:P2613 【模板】有理数取余 - 洛谷

题目描述

给出一个有理数 c=ba​,求 cmod19260817 的值。

这个值被定义为 bx≡a(mod19260817) 的解。

输入格式

一共两行。

第一行,一个整数 a。
第二行,一个整数 b。

输出格式

一个整数,代表求余后的结果。如果无解,输出 Angry!

输入输出样例

in:
233
666
out:
18595654

说明/提示

对于所有数据,保证 0≤a≤1010001,1≤b≤1010001,且 a,b 不同时是 19260817 的倍数。

算法介绍

本题需使用逆元。

逆元即对于同余方程 ax≡1(modp),

则 x 为 amodp 的逆元,

记作 a−1。

若其满足 a∤p,

则 a−1≡ap−2(modp)。

本题中 a 和 b 为较大的整数,

可以用快读来读入,

并对 19260817 取模。

正确性证明

根据费马小定理可知 ap−1≡1(modp)。

费马小定理证明:

构造集合 S={1,2,3,…,p−1},

同时构造集合 S′={a,a×2,a×3,…,a×(p−1)}。

由于 a∤p,

所以 a 和 p 互质。

因此对于所有不同的 u 和 v,

一定满足 a×u≡a×v(modp)。

所以 S′ 是模 p 意义下的完全剩余系,

且没给元素都与 S 中的某个元素同余。

然后计算 S 的积 ∏S=1×2×3×…(p−1)=(p−1)!(modp),

以及 S′ 的积 ∏S′=a×(a×2)×(a×3)×…(a×(p−1))=ap−1×(p−1)!(modp)。

因为 S 和 S′ 都是模 p 意义下的完全剩余系,

所以两集合的积同余,即 (p−1)!≡ap−1×(p−1)!(modp)。

最后化简得 ap−1≡1(modp)。

证出费马小定理,可以推出逆元式子:

1≡1(modp)a1×a−1≡ap−1(modp)a−1≡ap−2(modp)

对于幂的计算,可以使用快速幂。

时间复杂度 O(logA)。

此题还要用快读

 由于 a/b 可能是超大整数(如 10^10000 量级),

需在读入时直接对 19260817 取模,

避免高精度计算。

因此,

需要改造传统的快读为“即时取模”的快读。
“即时取模”的快读是一种在输入大整数时直接进行取模运算的优化技术,

常用于处理需要大数运算但最终结果需取模的场景(如数论题目)。

其核心思想是在逐位读取数字时同步计算模值,

避免存储完整的大数。

“即时取模”的快读代码如下所示。

int read() {int x=0,f=1;char c=getchar();while(c<'0' || c>'9') {if(c=='-') f=-1;c=getchar();}while(c>='0' && c<='9') {x=(x*10LL+c-'0')%m;c=getchar();}return x*f;
}

代码实现

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int m=19260817;int read() {int x=0,f=1;char c=getchar();while(c<'0' || c>'9') {if(c=='-') f=-1;c=getchar();}while(c>='0' && c<='9') {x=(x*10LL+c-'0')%m;c=getchar();}return x*f;
}
ll fast(ll a,ll n,ll p) {ll s=1;while(n) {if(n&1)s=s*a%p;n>>=1;a=a*a%p;}return s%p;
}
int main() {ll a=read(),b=read();if(b==0)cout<<"Angry!";else cout<<a*fast(b,m-2,m)%m;return 0;
}

各位大佬 

鼓励一下

关注+收藏+点赞

好吗

http://www.xdnf.cn/news/8475.html

相关文章:

  • 二维空间几何图形​​处理库.GEOS几何库.
  • ZeroNews内网穿透:实现OpenWrt远程访问与管理(2025最新方案)
  • 因为产品和思想的流行都是循序渐进的,需要一个影响的过程
  • 应用案例 | 柔性生产新范式,优傲UR20赋能葡萄酒灌装产线
  • 文学与社会学是否只是在做解释的工作?
  • 软件性能测试常用指标有哪些,做性能测试的第三方软件测评机构推荐
  • CAU人工智能class4 批次归一化
  • 投资策略规划最优决策分析
  • 什么是 API 管理?为什么管理 API 很重要?如何用 iPaaS 平台管理 API
  • Linux-线程同步于互斥
  • 《短线操盘跟庄关键技术》速读笔记
  • VLA视觉语言动作大模型的简单介绍
  • 2025年5月软考系分论文预测
  • C++11新特性(2)
  • 数据共享交换平台之API服务开发、挂载、申请审核
  • 【机械视觉】Halcon—【一、Halcon的介绍和基础语法】
  • CAMEL的特色功能——数据合成
  • 淘宝扭蛋机小程序开发:打造趣味电商新玩法,激活年轻消费力
  • 数据库设计文档撰写攻略
  • Baklib知识中台赋能智能管理实践
  • Idea 配合 devtools 依赖 实现热部署
  • GitHub 上关于 HDF5 使用教程的资源
  • Oracle 的 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH 命令
  • 2025 GEO优化战略图鉴:解码上海源易技术核心体系
  • 【Java高阶面经:消息队列篇】25、Kafka消息积压应对:从应急处理到架构根治
  • 湿疹治疗进入 “自护力时代”:泽德曼医药泽立美引领 “修复型治疗” 新趋势
  • 3D个人简历网站 7.联系我
  • 【问题】卸载Win11搜索框右侧的小组件
  • 23. 装饰器应用之测试用例的依赖实现
  • 宏山激光韩国釜山开放日圆满举行,服务本地化再提速