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 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    搭建angularjs API文档站点
    Web网站数据”实时”更新设计
    3kb jQuery代码搞定各种树形选择。
    阿里妈妈自动登录程序
    Android中RelativeLayout属性详细说明
    jQuery选择器总结
    ajax页面加载进度条插件
    jquery ajax 方法及各参数详解
    使用jQuery加载html页面到指定的div
    C#中无边框窗体移动
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7323234.html
Copyright © 2011-2022 走看看