SCUT - 492 - 鬼符「搦手的鬼畜生」 - 简单数学
求[1,a]范围内的a模m的逆元的数量。
一开始用扩展欧几里得算法草了一发,WA了,当时不太清楚模非质数的周期,看来扩展欧几里得算法的笔记才知道要加上m/(gcd(a,m)),但实际上用扩展欧几里得算法能求出逆元,gcd(a,m)必然是1,所以实际上是要特判掉p=1的情况。事实上p=1不可能会有什么逆元。这或许是扩展欧几里得算法求逆元的一个小问题。
事实上,扩展欧几里得算法忠实地求出了ax+by=gcd(a,b) mod c也就是ax+1=1 mod 1的解x0=0,y0=1,而x=x0+bt,y=y0+at,这两个的确是通解(两边无论是啥模了都是等于0,事实上任意的x,y都是这个方程的解)!也就是之前的模板里面,当p=1的时候,非常特殊。和乘法逆元的时候一样特殊。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a, p;
ll exgcd(ll a, ll b, ll &x, ll &y) {
if(!a && !b)
return -1;
if(!b) {
x = 1, y = 0;
return a;
}
ll d = exgcd(b, a % b, y, x);
y -= (a / b) * x;
return d;
}
ll inv_rp(ll a, ll p) {
if(p == 1)
return -1;
ll x, y;
if(exgcd(a, p, x, y) == 1)
return (x % p + p) % p;
return -1;
}
int main() {
#ifdef Yinku
freopen("Yinku.in", "r", stdin);
#endif // Yinku
while(~scanf("%lld%lld", &a, &p)) {
ll inva = inv_rp(a % p, p);
if(inva == -1 || p == 1)
puts("0");
else
printf("%lld\n", (a / p) + (a % p >= inva));
}
}
SCUT - 492 - 鬼符「搦手的鬼畜生」 - 简单数学的更多相关文章
- LOJ#10117. 「一本通 4.1 练习 2」简单题
LOJ#10117. 「一本通 4.1 练习 2」简单题 题目描述 题目来源:$CQOI 2006$ 有一个$n$个元素的数组,每个元素初始均为$0$.有$m$条指令,要么让其中一段连续序列数字反转— ...
- SCUT - 297 - 狂符「幻视调律(Visionary Tuning)」 - 重链剖分
https://scut.online/p/297 一般的树剖是关于点权的,但是突发奇想好像边权也是一样的.做一些小改动. #include<bits/stdc++.h> #define ...
- 【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(2)
Lighting和Shading(2)镜面反射的控制和模拟次级表面散射技术 http://www.4gamer.net/games/216/G021678/20140703095/index_2.ht ...
- 「给产品经理讲JVM」:垃圾收集算法
纠结的我,给我的JVM系列终于起了第三个名字,害,我真是太难了.从 JVM 到 每日五分钟,玩转 JVM 再到现在的给产品经理讲 JVM ,虽然内容为王,但是标题可以让更多的人看到我的文章,所以,历经 ...
- 「Unity卡牌自走棋」项目NABCD分析
项目 内容 这个作业属于哪个课程 2021学年春季软件工程(罗杰 任健) 这个作业的要求在哪里 团队项目-初次邂逅,需求分析 在这个课程的目标是 锻炼在大规模开发中的团队协作能力 这个作业在哪个具体方 ...
- 「Mobile Testing Summit China 2016」 中国移动互联网测试大会-议题征集
时至北京盛夏,一场由 TesterHome 主办的关于移动互联网测试技术的盛会正在紧锣密鼓的筹备中.只要你关注软件质量,热爱测试,期待学习,都欢迎你加入这次移动测试技术大会中和我们一起分享经验.探讨话 ...
- 众安「尊享e生」果真牛的不可一世么?
近日,具有互联网基因的.亏损大户(成立三年基本没盈利,今年二季度末亏损近4亿,你能指望它多厉害?).财产险公司—众安推出“尊享e生”中高端医疗保险(财险公司经营中高端医疗真的很厉害?真的是中高端医疗险 ...
- 「七天自制PHP框架」第二天:模型与数据库
往期回顾:「七天自制PHP框架」第一天:路由与控制器,点击此处 什么是模型? 我们的WEB系统一定会和各种数据打交道,实际开发过程中,往往一个类对应了关系数据库的一张或多张数据表,这里就会出现两个问题 ...
- 「七天自制PHP框架」第三天:PHP实现的设计模式
往期回顾:「七天自制PHP框架」第二天:模型与数据库,点击此处 原文地址:http://www.cnblogs.com/sweng/p/6624845.html,欢迎关注:编程老头 为什么要使用设计模 ...
随机推荐
- hive on tez 任务失败
最近再hue 集群查询任务经常失败,经过几天的观察,终于找到原因,报错如下 Status: FailedVertex failed, vertexName=Map 1, vertexId=vertex ...
- Js基础知识(二) - 原型链与继承精彩的讲解
作用域.原型链.继承与闭包详解 注意:本章讲的是在es6之前的原型链与继承.es6引入了类的概念,只是在写法上有所不同,原理是一样的. 几个面试常问的几个问题,你是否知道 instanceof的原理 ...
- 讨厌的adb占用
adb重启的方法 2018年06月13日 14:59:47 丽闪无敌 阅读数:11969 执行以下命令: D:\android-sdks\platform-tools>adb kill-se ...
- spark 笔记 15: ShuffleManager,shuffle map两端的stage/task的桥梁
无论是Hadoop还是spark,shuffle操作都是决定其性能的重要因素.在不能减少shuffle的情况下,使用一个好的shuffle管理器也是优化性能的重要手段. ShuffleManager的 ...
- Servlet基础总结
1.Servlet概念: Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间 ...
- EventChannel 原生向Flutter传递数据
目的:原生页面主动向Flutter页面传递信息 1 flutter步骤 定义EventChannel static const EventChannel eventChannel = EventCha ...
- leetcode 139 单词拆分(word break)
一开始的错误答案与错误思路,幻想直接遍历得出答案: class Solution { public: bool wordBreak(string s, vector<string>& ...
- Emacs Python 自动补全之 eglot
eglot 个人水平有限,自己的测试难免有不足甚至错误的地方.欢迎各位emacser 能前来留言交流. 首先eglot 是一个lsp-mode的集成环境.作者说这不仅仅是一个lsp工具.但是我从其说明 ...
- web开发(七) JSTL标签库
在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6432786.html>,在此仅供学习参考之用. 一.为什 ...
- 63不同路径II
题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ).机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”).现在考 ...