第十三届东北师范大学程序设计竞赛热身赛 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 ...
随机推荐
- 我的第一个python web开发框架(38)——管理员管理功能
后台管理员的管理功能,它主要用来管理后台的登录账号,绑定权限,当然如果想将后台管理扩展成企业相关管理系统,比如用于公司人事管理,在这个基础上进行适当扩展就可以了. 我们先看看界面效果(也可以看着数据字 ...
- 初窥css---选择器及相关特性
选择器及相关特性 基础选择器 标签选择器 相当于全选,在我看来局限性较大,也没啥意义的感觉,用处不太大 id选择器 有利于对于某个小盒子的部分属性进行改变,但是若是需要改的小盒子很多的话,就会很麻烦 ...
- 简介---linux内核态和用户态
内核态:进程运行在内核空间:管理系统的所有资源,比如读写磁盘文件,分配回收内存,从网络接口读写数据等等 用户态:进程运行在用户空间.比如一些应用程序 内核如何调用硬件资源的:内核空间中的代码控制了硬件 ...
- emacs常用指令
虽然平时用Dev,但考试的时候linux下没有Dev,只能用emacs了…… 这里记录一些我常用的指令和配置文件中的代码行. 指令: 1.c-x 1:只留一个窗口 2.c-x 2:分成上下两个窗口 3 ...
- 好程序员分享该如何选择background-image和img标签
好程序员分享该如何选择background-image和img标签,用img标签 如果你希望别人打印页面时候包含这张图片请使用img标签 当这张图片有非常有意义的语义,比如警告图标,请使用img标签及 ...
- (light oj 1306) Solutions to an Equation 扩展欧几里得算法
题目链接:http://lightoj.com/volume_showproblem.php?problem=1306 You have to find the number of solutions ...
- Python中的 sort 和 sorted
今天在做一道题时,因为忘了Python中sort和sorted的用法与区别导致程序一直报错,找了好久才知道是使用方法错误的问题!现在就大致的归纳一下sort和sorted的用法与区别 1. sort: ...
- Windows下的命令神器Cmder
1. 下载地址: https://cmder.net/ 建议安装完整版本 2.设置与基本使用 1)将cmder添加到环境变量中PATH 2)添加到右键 Cmder.exe /REGISTER ALL ...
- B+树和B-树的区别
https://www.jianshu.com/p/92d15df75027 这个网站好! https://www.cs.usfca.edu/~galles/visualization/BTree.h ...
- 偏差-方差均衡(Bias-Variance Tradeoff)
众所周知,对于线性回归,我们把目标方程式写成:. (其中,f(x)是自变量x和因变量y之间的关系方程式,表示由噪音造成的误差项,这个误差是无法消除的) 对y的估计写成:. 就是对自变量和因变量之间的关 ...