第十三届东北师范大学程序设计竞赛热身赛 C(exgcd+欧拉函数)
思路
对于答案,我们考虑对于每个可行的$c$会和多少$d$产生合法序偶。首先证明$c$和$b$必然互质。
假设$c$和$b$不互质,那么设$t_{1}=gcd(c, b),(t_{1} > 1)$对于
$(c*d)\%b=a$
等价于
$(k_{1}*t_{1})\%b=a,(k_1\in Z)$
$(k_{1}*t_{1})\%(k_{2}*t_{1})=a,(k_1,k_2\in Z)$
$k_{1}*t_{1}-k_{3}*t_{1}=a,(k_1,k_3\in Z)$
$t_{1}*(k_{1}-k_{3})=a,(k_1,k_3\in Z)$
由于$a\neq 0$,所以$t_{1}$是$a$的因子。因为$t_{1}$是$b$的因子,所以假设不成立,所以$c$与$b$互质。
接下来考虑每个$c$对答案的贡献。考虑$exgcd$的一般形式
$ax+by = c$
将$a,b,c$分别换成本题中的$c,b,a$,$x,y$换成$d, k$,得到
$cd+bk = a$
显然存在$d_{0},k_{0}$使得等式成立,那么得到$d,k$的答案的通项为
$d = \frac{a}{gcd(c,b)}d_{0}+\frac{t_{4}}{gcd(c, b)}b=ad_{0}+t_{4}b$
$k = \frac{a}{gcd(c,b)}k_{0}-\frac{t_{4}}{gcd(c, b)}c=ak_{0}-t_{4}c$
显然有且仅有一个$t_{4}$使得$1\leq d\leq b -1 $。
既然每个合法的$c$对答案的贡献有且只有$1$,那么答案就转化为$1$到$b-1$中与$b$互素的数的个数,就是欧拉函数了。
代码
#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl using namespace std;
typedef long long LL; int t, a, b; LL Euler(LL n) {
LL ans = n;
for(int i = 2; i * i <= n; i++) {
if(!(n % i)) {
ans = ans / i * (i - 1);
while(n % i == 0) n/=i;
}
}
return (n > 1 ? (ans / n * (n - 1)) : ans);
} int main() {
scanf("%d", &t);
while(t--) {
scanf("%d%d", &a, &b);
printf("%lld\n", Euler(b));
}
return 0;
}
第十三届东北师范大学程序设计竞赛热身赛 C(exgcd+欧拉函数)的更多相关文章
- 湖南省第十三届大学生计算机程序设计竞赛 Football Training Camp 贪心
2007: Football Training Camp[原创-转载请说明] Submit Page Summary Time Limit: 1 Sec Memory Limit: 1 ...
- 第十五届北京师范大学程序设计竞赛现场决赛题解&源码(A.思维,C,模拟,水,坑,E,几何,思维,K,字符串处理)
#include <bits/stdc++.h> using namespace std; int main() { int T,n,a,b; while(cin>>T) { ...
- 华东师范大学第十届ECNU Coder程序设计竞赛
华东师范大学第十届ECNU Coder程序设计竞赛 浮点数模运算 solution 转成整数然后取模. 时间复杂度:\(O(1)\) 数螃蟹 solution 找出公差出现次数最多的作为公差,然后找出 ...
- ZZUOJ-1195-OS Job Scheduling(郑州大学第七届ACM大学生程序设计竞赛E题)
1195: OS Job Scheduling Time Limit: 2 Sec Memory Limit: 128 MB Submit: 106 Solved: 35 [id=1195&quo ...
- 第十四届中北大学ACM程序设计竞赛 J.ZBT的游戏
问题描述 第14届中北大学程序设计竞赛来了,集训队新买了一大堆气球,气球一共有K种颜色(1<=K<=256),气球的颜色从1-K编号. ZBT童心未泯,他发明了一种摆放气球的游戏,规则如下 ...
- 陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】
链接:https://www.nowcoder.com/acm/contest/121/J来源:牛客网 题目描述 大家知道,黑猫有很多的迷弟迷妹,当然也有相亲相爱的基友,这其中就有一些二五仔是黑猫的小 ...
- 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]-最小内积(第八届北京师范大学程序设计竞赛决赛)
H. 最小内积 Time Limit: 1000ms Memory ...
- 希尔加密算法(湖南师范大学第六届大学生计算机程序设计竞赛)hnuoj11552
解密 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 2, Accept ...
- FZU - 2295 Human life:网络流-最大权闭合子图-二进制优化-第九届福建省大学生程序设计竞赛
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 http://acm.fzu.edu.cn/problem.php?pid=2295 htt ...
随机推荐
- java 开发工具记录
jenkins 持续构建项目 lombok 优雅代码插件 sonarqube 代码检测插件
- Linux:Day20(上) openssh和CA
ssh:secure shell protocol,22/tcp,安全的远程登陆 OpenSSH:ssh协议的开源实现: dripbear:另一个开源实现: SSH协议版本 v1:基于CRC-32做M ...
- VS2010动态链接库的生成及调用(C++)
一.动态链接库的生成 首先利用VS2010新建一个空的工程或者win32工程 2.在工程中添加头文件和源文件 3.工程属性配置 3.1 可以在解决方案目录下新建以下几个文件夹 bin (用于存放Rel ...
- Ceva定理的四种证明方法
${\color{Teal} {Ceva定理}}$设$D.E.F$依次为三角形ABC的边$AB.BC.CA$的内点,记 $λ$=(A,B,D),$μ$=(B,C,E),$v$=(C,A,F) 求证:三 ...
- C++通用WMI接口实现获取Windows操作系统内核版本号
作为一名Windows开发者,能熟练掌握WMI技术,在开发Windows应用程序的时候往往能够事半功倍.今天来给大家分享一个使用WMI来获取Windows操作系统内核版本号的例子. 首先我们打开WMI ...
- asp.net core 2.2 中的过滤器/筛选器(上)
ASP.NET Core中的过滤器/筛选器 通过使用 ASP.NET Core MVC 中的筛选器,可在请求处理管道中的特定阶段之前或之后运行代码. 注意:本主题不适用于 Razor 页面. ASP. ...
- [转帖]为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。
[终极解决方案]为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误.该进程 ID 为“XXXX”.数据字段包含错误号. ...
- [转帖]Windows7/2008中批量删除隧道适配器的方法
https://www.jb51.net/os/windows/479838.html 客户现场的硬件信息总是发生变化 这里查找一下资料 尝试一下. 1.在网卡属性的“网络”中,将“Internet协 ...
- ASP.net中用到的JWT
1.先通过NuGet添加JWT 2.新建一个JwtHelp类 public class JwtHelp { //私钥 web.config中配置 //"GQDstcKsx0NHjPOuXOY ...
- DAY24、面向对象
一.复习继承1.父类:在类后()中写父类们2.属性查找顺序:自己->()左侧的父类->依次往右类推3.抽离:先定义子类,由子类的共性抽离出父类 派生:父类已经创建,通过父类再去派生子类4. ...