noip 同余方程

描述

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

格式

输入格式

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

输出格式

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

样例1

样例输入1

3 10

样例输出1

7

限制

每个测试点1s

提示

对于40%的数据,2 ≤b≤ 1,000; 
对于60%的数据,2 ≤b≤ 50,000,000; 
对于100%的数据,2 ≤a, b≤ 2,000,000,000。

来源

Noip2012提高组复赛Day2T1

#include<cstdio>
#include<cstring>
long long aa[200010];
int phi;
long long int mod;
long long int poww(long long int a)
{
//    printf("%lld ",mod);
    int b=phi-1;
    long long ans=1;
    while(b)
    {
        if(b&1) ans=ans*a%mod;
        b=b>>1;
        a=a*a%mod;
    }
    return ans;
}
int getphi(int x)
{
    int sum=x;
    for(int i=2;i*i<=x;i++)
    {
        if(x%i==0)
        {
            sum=sum/i*(i-1);
            while(x%i==0) x/=i;
        }
    }
    if(x>1) sum=sum/x*(x-1);
    return sum;
}
int main()
{
    long long int a;
    scanf("%lld %lld",&a,&mod);
    phi=getphi(mod);
  //  printf("%d ",phi);
  //  printf("%lld ",mod);
//  printf("%d",ans);
    long long  ans=poww(a);
    printf("%lld",ans);
    return 0;
}

不会用拓欧求逆元;

只会用费马小定理求逆元;

(我好菜!!!)

时间: 2024-11-02 02:14:25

noip 同余方程的相关文章

扩展欧几里得模板(洛谷1082 同余方程NOIP 2012 提高组 第二天 第一题)

题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正整数 x0,即最小正整数解.输入数据保证一定有解. 输入输出样例 输入样例#1: 3 10 输出样例#1: 7 说明 [数据范围] 对于 40%的数据,2 ≤b≤ 1,000: 对于 60%的数据,2 ≤b≤ 50,000,000: 对于 100%的数据,2 ≤a, b≤ 2,000,000,000

同余方程 2012年NOIP全国联赛提高组

时间限制: 1 s   空间限制: 128000 KB  题解 题目描述 Description 求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入描述 Input Description 输入只有一行,包含两个正整数 a, b,用 一个 空格隔开. 输出描述 Output Description 输出只有一行包含一个正整数x0,即最小正整数解,输入数据保证一定有解. 样例输入 Sample Input 3 10 样例输出 Sample Output 7 数据范围及提示 D

codevs 1200 同余方程 2012年NOIP全国联赛提高组 x

/*我在提交的时候发现了一个特别好玩的事,有兴趣的话,可以自己尝试一下:把下面说的地方的y=0改为y=1在codevs里面能够ac,这--数据水?到一定境界--厉害了,吓得我还以为自己对了,结果一讲才知道,根本不对,然后我自己自己弄数据它就不同,这是--我太厉害了?哈哈哈*/ 题目描述 Description 求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入描述 Input Description 输入只有一行,包含两个正整数 a, b,用 一个 空格隔开. 输出描述 O

【NOIP】提高组2012 同余方程

[算法]扩展欧几里德算法 [题解]学完扩欧就可以随便水了... 转化为不定方程ax-by=1. 因为1且题目保证有解,所以方程有唯一解. 紫书曰:同余方程的一个解其实指的是一个同余等价类. 所以满足x≡x'(mod b)的其他x'也是方程的解. 题目求最小正整数解,因此ans=x%b. #include<cstdio> #define ll long long void gcd(ll a,ll b,ll& g,ll& x,ll& y) { if(!b){g=a;x=1,

【codevs 1200】【NOIP 2012】同余方程 拓展欧几里德求乘法逆元模板题

模板,,, #include<cstdio> using namespace std; void exgcd(long long a,long long b,long long &x,long long &y){ if (b==0) {x=1; y=0;} else {exgcd(b,a%b,x,y); int t=y; y=x-a/b*y; x=t;} } int main(){ long long a,b,x,y; scanf("%lld %lld\n"

洛谷P1082 同余方程

题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正整数 x0,即最小正整数解.输入数据保证一定有解. 输入输出样例 输入样例#1: 3 10 输出样例#1: 7 说明 [数据范围] 对于 40%的数据,2 ≤b≤ 1,000: 对于 60%的数据,2 ≤b≤ 50,000,000: 对于 100%的数据,2 ≤a, b≤ 2,000,000,000

洛谷 P1082 同余方程

题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正整数 x0,即最小正整数解.输入数据保证一定有解. 输入输出样例 输入样例#1: 3 10 输出样例#1: 7 说明 [数据范围] 对于 40%的数据,2 ≤b≤ 1,000: 对于 60%的数据,2 ≤b≤ 50,000,000: 对于 100%的数据,2 ≤a, b≤ 2,000,000,000

1200 同余方程

1200 同余方程 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入描述 Input Description 输入只有一行,包含两个正整数 a, b,用 一个 空格隔开. 输出描述 Output Description 输出只有一行包含一个正整数x0,即最小正整数解,输入数据保证一定有解. 样例输入 Sample In

扩展gcd codevs 1200 同余方程

codevs 1200 同余方程 2012年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入描述 Input Description 输入只有一行,包含两个正整数 a, b,用 一个 空格隔开. 输出描述 Output Description 输出只有一行包含一个正整数x0,即最小正整数解,输入数据保证一定有解. 样例输入 Sa