题目链接

思路

对于答案,我们考虑对于每个可行的$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+欧拉函数)的更多相关文章

  1. 湖南省第十三届大学生计算机程序设计竞赛 Football Training Camp 贪心

    2007: Football Training Camp[原创-转载请说明] Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 1 ...

  2. 第十五届北京师范大学程序设计竞赛现场决赛题解&源码(A.思维,C,模拟,水,坑,E,几何,思维,K,字符串处理)

    #include <bits/stdc++.h> using namespace std; int main() { int T,n,a,b; while(cin>>T) { ...

  3. 华东师范大学第十届ECNU Coder程序设计竞赛

    华东师范大学第十届ECNU Coder程序设计竞赛 浮点数模运算 solution 转成整数然后取模. 时间复杂度:\(O(1)\) 数螃蟹 solution 找出公差出现次数最多的作为公差,然后找出 ...

  4. 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 ...

  5. 第十四届中北大学ACM程序设计竞赛 J.ZBT的游戏

    问题描述 第14届中北大学程序设计竞赛来了,集训队新买了一大堆气球,气球一共有K种颜色(1<=K<=256),气球的颜色从1-K编号. ZBT童心未泯,他发明了一种摆放气球的游戏,规则如下 ...

  6. 陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】

    链接:https://www.nowcoder.com/acm/contest/121/J来源:牛客网 题目描述 大家知道,黑猫有很多的迷弟迷妹,当然也有相亲相爱的基友,这其中就有一些二五仔是黑猫的小 ...

  7. 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]-最小内积(第八届北京师范大学程序设计竞赛决赛)

    H. 最小内积                                                                   Time Limit: 1000ms Memory ...

  8. 希尔加密算法(湖南师范大学第六届大学生计算机程序设计竞赛)hnuoj11552

    解密 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 2, Accept ...

  9. FZU - 2295 Human life:网络流-最大权闭合子图-二进制优化-第九届福建省大学生程序设计竞赛

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 http://acm.fzu.edu.cn/problem.php?pid=2295 htt ...

随机推荐

  1. July 12th, 2018. Thursday, Week 28th.

    People love what other people are passionate about. 人总是会爱上别人倾注热情的事物. From La La Land. This quote has ...

  2. 【心得】Lattice和Xilinx工具关键特性对比(Diamond、ISE)

    [博客导航] [导航]FPGA相关 背景 由于项目需要,初次接触Diamond,发现跟之前的ISE有很多不同,记录下一些体会,供参考.按开发流程,将一些常用的特性进行对比,列举如下: IP Core管 ...

  3. Flink监控:Monitoring Apache Flink Applications

    This post originally appeared on the Apache Flink blog. It was reproduced here under the Apache Lice ...

  4. 【憩园】C#并发编程之异步编程(一)

    写在前面 C#5.0中,对异步编程进行了一次革命性的重构,引入了async和await这两个关键字,使得开发人员在不需要深刻了解异步编程的底层原理,就可以写出十分优美而又代码量极少的代码.如果使用得当 ...

  5. HTML5网页点击分享到whatsapp

    一.在网页头部加入分享标题和url,代码如下: <meta name="whatsapp:url" class="share_url" content=& ...

  6. MyBatis 3源码解析(三)

    三.getMapper获取接口的代理对象 1.先调用DefaultSqlSession的getMapper方法.代码如下: @Override public <T> T getMapper ...

  7. 使用Docker安装Oracle数据库

    在很多时候,我们需要在本地安装Oracle数据库,但是整个安装的过程时间非常长而且安装文件大,那么有不有更好的办法来安装Oracle数据库既能减少安装的时间而且还能够快速进行部署呢?答案就是使用Doc ...

  8. Java遍历List5种方法的效率对比

    package com.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** ...

  9. Linux跑脚本用sh和./有什么区别?(转)

    sh是一个shell.运行sh a.sh,表示我使用sh来解释这个脚本:如果我直接运行./a.sh,首先你会查找脚本第一行是否指定了解释器,如果没指定,那么就用当前系统默认的shell(大多数linu ...

  10. nginx--default_server定义规则及配置

    nginx 的 default_server 指令可以定义默认的 server 出处理一些没有成功匹配 server_name 的请求,如果没有显式定义,则会选取第一个定义的 server 作为 de ...