COJ 1163 乘法逆元的求解


乘法逆元就是求一个 a/b = c(mod m)在已知a%m , b%m 的条件下 求c的解

 1 #include <cstdio>
 2 #include <cstring>
 3 
 4 using namespace std;
 5 #define ll long long
 6 const int N = 100005;
 7 int val[N];
 8 
 9 ll ex_gcd(ll a , ll b , ll &x , ll &y)
10 {
11     if(b == 0){
12         x=1 , y=0;
13         return a;
14     }
15     ll ans = ex_gcd(b,a%b,x,y);
16     ll t=x;
17     x=y,y=t-a/b*y;
18     return ans;
19 }
20 
21 ll inv(ll a , ll b , ll mod)
22 {
23     ll x , y;
24     ll d = ex_gcd(b,mod,x,y);
25     return a*x%mod;
26 }
27 
28 int main()
29 {
30     int n,m;
31     while(scanf("%d%d" , &n , &m ) == 2)
32     {
33         ll sum = 1;
34         for(int i=0 ; i<n ; i++){
35             scanf("%d" , val+i);
36             sum = (sum*val[i])%m;
37         }
38         for(int i=0 ; i<n ; i++){
39             ll ans = (inv(sum , (ll)val[i] , m)+m)%m;
40             if(i==0) printf("%lld" , ans);
41             else printf(" %lld" , ans);
42         }
43         printf("\n");
44     }
45     return 0;
46 }

优质内容筛选与推荐>>
1、Eclipse安装SVN插件
2、Codeforces 467A
3、高级查询45道练习题
4、视频编码原理简介
5、必须知道的SQL语法


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号