题目链接

思路

对于答案,我们考虑对于每个可行的$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. redux 简介

    概述 Redux 本身是个极其简单的状态管理框架, 它的简单体现在概念少, 流程明确. 但是, 正是因为简单, 使用上没有强制的约束, 所以如果用不好, 反而会让状态管理更加混乱. 我觉得, 用好 R ...

  2. Copula函数

    Copula函数 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. Copula介绍 Copula函数把边缘分布函数与联合分布函数联系起来,是研究变 ...

  3. ctrl+shift+r / ctrl+f5 强制(不使用缓存)刷新google chrome网页

    我改了csdn图片后, 一直看到的是旧图片, n天之后, 还是旧图片.猜测应该是用了缓存(且缓存更新逻辑失败, 定是csdn的bug), 用ctrl+shift+r, 或者ctrl+f5, 强制刷新页 ...

  4. 突击战 (uva 11729)贪心

    思路:就是把J大的放在前面.为什么这样贪心呢? 看看这个图 #include<iostream> #include<algorithm> #include<vector& ...

  5. php将字符串转为二进制数据串

    /** * 将字符串转换成二进制 * @param type $str * @return type */ function StrToBin($str){ //1.列出每个字符 $arr = pre ...

  6. 如何用Eclipse创建一个JavaSwing的项目

    创建之前必须先给开发工具安装WindowBuilder插件(安装方法可自行百度) 方式一: 创建项目 new--other--WindowBuilder--SWT Designer----SWT/JF ...

  7. 关于vue生命周期

    官网给出的实例的生命周期图如下: beforeCreate(页面创建前),created(页面创建后),beforeMount(页面载入前),mounted(页面载入后),beforeUpdate(页 ...

  8. python监控机器(第1版)

    # coding:utf-8 import configparser import logging import os import psutil import ctypes import platf ...

  9. Sass 笔记

    Sass 笔记 1. 安装,依赖Ruby sass依赖Ruby, 所以Windows要先安装Ruby, Mac自带无需安装 $ gem install sass 2. 两种文件格式 sass scss ...

  10. 管理者的情商EQ

    管理者的情商EQ1 IQ与EQ与AQ: IQ:智慧.逻辑.解决问题 EQ:情感商数.领导团队的热情.互动 AQ:逆商.碰到逆境怎么办.得重大疾病怎么办 成功者的概率: 放弃者:70% 半途而废者:25 ...