zoukankan      html  css  js  c++  java
  • COGS——T 1265. [NOIP2012] 同余方程

    http://cogs.pro/cogs/problem/problem.php?pid=1265

    ★☆   输入文件:mod.in   输出文件:mod.out   简单对比
    时间限制:1 s   内存限制:128 MB

    【题目描述】

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

    【输入格式】

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

    【输出格式】

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

    【样例输入】

    3 10

    【样例输出】

    7

    【数据范围】

    对于 40%的数据,2 ≤b≤ 1,000; 

    对于 60%的数据,2 ≤b≤ 50,000,000; 

    对于 100%的数据,2 ≤a, b≤ 2,000,000,000。

    欧拉定理求解,要mod b才可以计算出最小值

    欧拉定理:a ^φ(p) ≡ 1(mod p)   对于任意互质的 a,p 恒成立.  -->>a × a^( φ(p)−1) ≡ 1(mod p)

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 #define LL long long
     7 LL a,b;
     8 
     9 LL phi(LL x)
    10 {
    11     LL ret=1;
    12     for(LL i=2;i*i<=x;i++)
    13         if(x%i==0)
    14         {
    15             x/=i;
    16             ret*=i-1;
    17             for(;x%i==0;)
    18                 ret*=i,x/=i;
    19         }
    20     if(x>1) ret*=x-1;
    21     return ret;
    22 }
    23 LL Q_pow(LL a,LL b,LL mod)
    24 {
    25     LL ret=1,base=a;
    26     for(;b;b>>=1)
    27     {
    28         if(1&b) ret=(ret*base)%mod;
    29         base=(base*base)%mod;
    30     }
    31     return ret;
    32 }
    33 
    34 int main()
    35 {
    36     freopen("mod.in","r",stdin);
    37     freopen("mod.out","w",stdout);
    38     
    39     scanf("%lld%lld",&a,&b);
    40     LL ans=Q_pow(a,phi(b)-1,b);
    41     for(;ans<0;) ans+=b;
    42     printf("%lld",ans);
    43     return 0;
    44 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    关于Dockerfile
    hiho一下 第六十四周 Right-click Context Menu
    hdu2642二维树状数组单点更新+区间查询
    东大oj-1511: Caoshen like math
    东大OJ-1588: Routing Table
    东大oj-1591 Circle of friends
    2015年辽宁省赛Interesting Tree
    东大OJ-1544: GG的战争法则
    迷宫问题-广度优先搜索
    vijos P1009清帝之惑之康熙
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7323234.html
Copyright © 2011-2022 走看看