B - Modular Inverse
The modular modular multiplicative inverse of an integer a modulo m is an integer x such that a-1≡x (mod m). This is equivalent to ax≡1 (mod m).
Input
There are multiple test cases. The first line of input is an integer T ≈ 2000 indicating the number of test cases.
Each test case contains two integers 0 < a ≤ 1000 and 0 < m ≤ 1000.
<h4< dd="">Output
For each test case, output the smallest positive x. If such x doesn't exist, output "Not Exist".
<h4< dd="">Sample Input
3
3 11
4 12
5 13
<h4< dd="">Sample Output
4
Not Exist
8 这题就是求乘法逆元
我用的方法比较复杂,我是这么想的,先判断a和f是不是互质,如果互质才有乘法逆元,否则没有乘法逆元,费马小定理可以求出膜是素数的乘法逆元,欧拉定理可以求出膜是非素数的乘法逆元:
具体方法:费马小定理,先要判断是不是素数,然后再用快速幂
欧拉定理,先要写欧拉函数,然后再用快速幂,其中欧拉函数需要一个质数的数组isp
所以用这种方法要写很多的函数,不过也好,昨天学的,正好好好的复习一下
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
typedef long long ll;
const int maxn=1e5;
int p[maxn];//素数筛
void init()
{
for(int i=2;i<maxn;i++) p[i]=1;
for(int i=2;i*i<maxn;i++)
{
if(p[i])
{
for(int j=i*i;j<maxn;j+=i)
{
p[j]=0;
}
}
}
}
//v数组记录每一个i的最小质因数,isp记录所有的质数
int v[maxn],isp[maxn],m;
void init1()
{
for(int i=2;i<maxn;i++)
{
if(v[i]==0)
{
isp[m++]=i;
v[i]=i;
}
for(int j=0;j<m;j++)
{
if(v[i]<isp[j]||i*isp[j]>maxn) break;
v[i*isp[j]]=isp[j];
}
}
} int gcd(int a,int b)
{
return b==0? a:gcd(b,a%b);
}
int euler(int n)
{
int res=n;
for(int i=0;i<m;i++)
{
if(n%isp[i]==0)
{
res=res*(isp[i]-1)/isp[i];
}
}
return res;
}
int mod;
ll mod_pow(ll x,int n)
{
ll ans=1;
while(n)
{
if(n & 1) ans=ans*x%mod;
x=x*x%mod;
n>>=1;
}
return ans;
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int f;
ll a;
scanf("%I64d%d",&a,&f);
init();
init1();
mod=f;
int ans;
if(gcd(a,f)==1)
{ if(p[f])//费马小定理
{
ans=mod_pow(a,f-2);
}
else//欧拉定理
{
int exa=euler(f);
ans=mod_pow(a,exa-1);
}
}
else {
printf("Not Exist\n");
continue;
}
printf("%d\n",ans);
}
return 0;
}
B - Modular Inverse的更多相关文章
- 寒假 D3 D Modular Inverse
Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB ...
- zjuoj 3609 Modular Inverse
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3609 Modular Inverse Time Limit: 2 Seco ...
- Modular Inverse(模逆元,扩展欧几里德)
Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB The modular modular multiplicative ...
- Modular Inverse(zoj3609+欧几里德)
Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB The modular modular multiplicative ...
- ZOJ 3609 Modular Inverse(拓展欧几里得求最小逆元)
Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB The modular modular multiplicative ...
- ZOJ——3609 Modular Inverse
Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB The modular modular multiplicative ...
- [ACM_其他] Modular Inverse [a关于模m的逆 模线性方程]
Description The modular modular multiplicative inverse of an integer a modulo m is an integer x such ...
- 【ZOJ 3609】Modular Inverse 最小乘法逆元
The modular modular multiplicative inverse of an integer a modulo m is an integer x such that a-1≡x ...
- Modular Inverse (拓展欧几里得求逆元)
The modular modular multiplicative inverse of an integer a modulo m is an integer xsuch that a-1≡x ( ...
随机推荐
- Java设计模式学习记录-迭代器模式
前言 这次要介绍的是迭代器模式,也是一种行为模式.我现在觉得写博客有点应付了,前阵子一天一篇,感觉这样其实有点没理解透彻就写下来了,而且写完后自己也没有多看几遍,上次在面试的时候被问到java中的I/ ...
- [APC001] D Forest
Description 给定\(n\)个点\(m\)条边组成的森林,每个点有权值\(a_i\).现在需要将森林连成一棵树,选择两个点\(i,j\)连边的代价是\(a_i+a_j\),每个点最多被选择连 ...
- [转]微擎MVC
本文转自:https://www.kancloud.cn/donknap/we7/134626 控制器 控制器以文件夹.文件的形式组织,位于系统的 source 目录下,每一个目录代表一个 contr ...
- T-SQL:函数大全(九)
1.CONCAT函数 SELECT custid, country, region, city, country + N',' + region + N',' + city AS location F ...
- 菜鸟入门【ASP.NET Core】13:Individual authentication 模板、EF Core Migration
Individual authentication 模板 我们首先用VSCode新建一个mvc的网站,这个网站创立的时候回自动为我们创建Identuty Core以及EF Core的代码示例,我们可以 ...
- jquery全选或不全选时,不操作已经禁用的checkbox
$("#selectAll").click(function(){ if(this.checked ){ $(":checkbox[name='equid']" ...
- 性能监控(1)--linux下的top命令
Linux下的监控工具 top命令 top命令能够实时显示系统中各个进程的资源占用情况,其输出信息分为两部分,前半部分为系统统计信息,后半部分是进程信息. 第一行是任务队列信息,它的结果等同于upti ...
- Nginx + 阿里云SSL + tomcat 实现https访问代理
第一步:阿里云申请云盾证书服务 第二步:下载证书 第三步:修改Nginx配置 1. 证书文件214033834890360.pem,包含两段内容,请不要删除任何一段内容. 2. 如果是证书系统创建的C ...
- cache 访问频率的思考
互联网的项目用户基数很大,有时候瞬间并发量非常大,这个时候对于数据访问来说是个灾难.为了应对这种场景,一般都会大量采用web服务器集群,缓存集群.采用集群后基本上就能解决大量并发的数据访问.当然这个时 ...
- Ps—导出:sql作业配合ps导出csv文件
$dateText=Get-Date #获取当前日期时间 $dateText = $dateText.ToShortDateString() #转为短日期格式(去掉时间部分) $checkDate=( ...