同余方程

https://ac.nowcoder.com/acm/problem/16563

扩展欧几里得

方程ax+by=n,当n能够被gcd(a,b)整除时,那么就可以用扩展欧几里得来求改方程的特解。

同余方程

同余方程ax≡m(mod b),意思是ax模b的值等于m模b的值,做下变换有(ax-m)%b≡0,说明(ax-m)是b的整数倍,设该整数为k,那么(ax-m)=kb,即ax-kb=m,因为k可以为正数或负数,所以ax+kb=m,接下来可以用扩展欧几里得来求一个解。

#include <bits/stdc++.h>
#include <iostream>
#include <algorithm>
#include <stdio.h>
const int Max = 100 * 100 * 100 + 5;
#define LL long long
const int mod = 1e9+7;
const int INF = 1e9+7;
//const int inx = INT_MAX; 
using namespace std;
//    srand(time(NULL));
//        m = rand() % 1000 + 1;

//定义i i(A) i+n i+n(B) i+n+n i+n+n(C) 
//bitset<Max>s,q;

LL gcd_ex(LL a,LL b,LL &x, LL &y)//扩展欧几里得
{
    if(b == 0){
        x = 1;
        y = 0;
        return a;
    }
    LL d = gcd_ex(b,a % b,y,x);
    y = y - a / b * x;
    return d;
}

int main()
{
    LL a,b,x,y;
    cin >> a >> b;
    LL t = gcd_ex(a,b,x,y);
    cout << (x + b) % b;
    return 0;
}
全部评论

相关推荐

菜鸡29号:根据已有信息能初步得出以下几点: 1、硕士排了大本和大专 2、要求会多语言要么是招人很挑剔要么就是干的活杂 3、给出校招薪资范围过于巨大,说明里面的薪资制度(包括涨薪)可能有大坑
点赞 评论 收藏
分享
2024-12-27 10:21
已编辑
海南师范大学 媒介策划
到我怀里来:身高体重住址这些就别写了,留几个关键的就行,工作经历突出重点写详细点
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务