描述

求关于 x的同余方程  ax ≡ 1(mod b) 的最小正整数解。

输入格式

输入文件 mod.in
输入只有一行,包含两个正整数a,b,用一个空格隔开。

输出格式

输出文件 为 modmod .out 。
输出只有一行,包含一个正整数,包含一个正整数 ,包含一个正整数 x0,即最小正整数解。 输入据保证一定有解。

测试样例1

输入

3 10

输出

7

备注

对于 40% 的数据    2 ≤b≤1,000
对于 60% 的数据    2 ≤b≤50,000,000
对于 100%的数据    2 ≤a, b≤2,000,000,000NOIP2012-TG
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
ll euler_phi(ll x){
ll m = (ll)sqrt(x+0.5);
ll ans = x;
for(int i = ;i <= m;i++){
if(x % i == ){
ans = ans / i * (i-);
while(x % i == ) x /= i;
}
}
if(x > ) ans = ans / x * (x-);
return ans;
}
ll q_mul(ll a,ll b,ll p){
ll ans = ;
while(b){
if(b&){
ans = (ans + a) % p;
b--;
}
b >>= ;
a = (a + a) % p;
}
return ans;
}
ll q_pow(ll a,ll b,ll p){
ll ans = ;
while(b){
if(b&){
ans = q_mul(ans,a,p);
}
b >>= ;
a = q_mul(a,a,p);
}
return ans;
}
void exgcd(ll a,ll b,ll& d,ll& x,ll& y){
if(b == ){
x = ;
y = ;
d = a;
return;
}
exgcd(b,a%b,d,y,x);
y -= (a/b)*x;
}
int phi[];
void phi_table(int n){
for(int i = ;i <= n;i++) phi[i] = ;
phi[] = ;
for(int i = ;i <= n;i++) if(!phi[i])
for(int j = i;j <= n;j+=i){
if(!phi[j]) phi[j] = j;
phi[j] = phi[j] / i * (i-);
}
}
int main(){
ll a,b,d,x,y;
cin>>a>>b;
cout<<q_pow(a,euler_phi(b)-,b);
return ;
}

NOIP2012同余方程的更多相关文章

  1. 一本通1632【 例 2】[NOIP2012]同余方程

    1632:[ 例 2][NOIP2012]同余方程 时间限制: 1000 ms         内存限制: 524288 KB [题目描述] 求关于 x 的同余方程 ax≡1(mod b) 的最小正整 ...

  2. 1265. [NOIP2012] 同余方程

    1265. [NOIP2012] 同余方程 ★☆   输入文件:mod.in   输出文件:mod.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] 求关于 x 的同余 ...

  3. 1632:【 例 2】[NOIP2012]同余方程

    #include<bits/stdc++.h> #define ll long long using namespace std; void Exgcd(ll a,ll b,ll & ...

  4. [NOIP2012] 同余方程(第三次考试大整理)

    1265. [NOIP2012] 同余方程 输入文件:mod.in   输出文件:mod.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] 求关于 x 的同余方程 ax ...

  5. NOIP2012同余方程[exgcd]

    题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开 输出格式: 输出只有一行,包含一个正整 ...

  6. NOIP2012 同余方程-拓展欧几里得

    题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正 ...

  7. 【codevs1200】 NOIP2012—同余方程

    codevs.cn/problem/1200/ (题目链接) 题意 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. Solution 这道题其实就是求${a~mod~b}$的逆元 ...

  8. 【扩展欧几里得】Codevs 1200: [noip2012]同余方程

    Description 求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解. Input Description 输入只有一行,包含两个正整数 a, b,用 一个 空格隔开. Outpu ...

  9. NOIP2012 同余方程

    1同余方程 题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行 ...

随机推荐

  1. RubyMine优化设置

    RubyMine和IntelliJ默认的JVM -xmx参数太低了,占用的内存满了一GC,程序就假死了,把-xmx改大点就不容易假死了,配合SSD效果更好. [RUBYMINE_DIRECTORY]/ ...

  2. required string parameter XXX is not present

    @RequestParam jQuery调用方式: deleteFile: function(filePath) { return ajax({ method: 'POST', url: '/cm/s ...

  3. Java面向对象 第一章 面向对象开发方法概述

    一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...

  4. Spring中的cglib动态代理

    Spring中的cglib动态代理 cglib:Code Generation library, 基于ASM(java字节码操作码)的高性能代码生成包 被许多AOP框架使用 区别于JDK动态代理,cg ...

  5. sqlServer下展示某库中所有的表

  6. PS 切图

    1.选择要切哪一块 比如:要切取人物图片, 会自动选择所选的图层 打开关闭某个图层 然后在图层上点击右键,选择合并组 然后Ctrl+c复制--ctrl+n新建画板--

  7. [No00006A]Js的addEventListener()及attachEvent()区别分析【js中的事件监听】

    1.添加时间监听: Chrom中: addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target ...

  8. python基础之dict、set及字符

    python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射类型,采用键值对(key-value)的形式存 ...

  9. 潭州学院-JavaVIP的Javascript的高级进阶-KeKe老师

    潭州学院-JavaVIP的Javascript的高级进阶-KeKe老师 讲的不错,可以学习 下面是教程的目录截图: 下载地址:http://www.fu83.cn/thread-283-1-1.htm ...

  10. ajax给全局变量赋值问题解决示例

    今天在做项目时,遇到了一个问题.我用的是ajax,要在 ajax里面给一个全局变量赋值,结果死活赋值不上,纠结了好半天,后来上网查了查,才 知道,ajax默认是异步请求,(当要赋值时,此时的值没有拿到 ...