poj2115(extend gcd + 逆元)

作者: sugar_coated | 来源:发表于2016-10-24 17:39 被阅读17次

题意:给你A、B、C、k (1 <= k <= 32),执行下面的语句。 (0 <= A, B, C < 2^k)

long long cnt = 0;
for (variable = A; variable != B; variable += C)
    cnt++;```

求循环结束后的cnt为多少,如果是死循环,就输出"FOREVER"。其中0 <= variable < 2^k如果variable>=2^k、variable就需要取variable mod 2^k的余数。

**Sample Input**
> 3 3 2 16
3 7 2 16
7 3 2 16
3 4 2 16
0 0 0 0

**Sample Output**
> 0
2
32766
FOREVER

思路:根据循环语句可以得到A + Cx  = B mod 2^k; 即Cx = (B - A) mod 2^k;
可以联想到逆元,x是C关于2^k的乘法逆元,所以可以转化公式为:Cx + (2^k)y = B - A,而a*x + b*y = c 有解的充要条件是c % gcd(a , b) == 0,此题也就迎刃而解了。

include <iostream>

using namespace std;

typedef long long ll;

ll extgcd(ll a, ll b, ll &x, ll &y) {
int d = a;
if (b != 0) {
d = extgcd(b, a % b, y, x);
y -= a / b * x;
}
else {
x = 1;
y = 0;
}
return d;
}

int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
ll A, B, C, k;
while (cin >> A >> B >> C >> k && A + B + C + k) {
k = (ll)1 << k;//注意强制转换
ll x, y;
ll a = C;
ll b = k;
ll c = B - A;
ll gcd = extgcd(a, b, x, y);
if (c % gcd != 0) cout << "FOREVER" << endl;
else {
x *= c / gcd;
ll ans = (x % (b / gcd) + (b / gcd)) % (b / gcd);
cout << ans << endl;
}
}
return 0;
}

相关文章

  • poj2115(extend gcd + 逆元)

    题意:给你A、B、C、k (1 <= k <= 32),执行下面的语句。 (0 <= A, B, C < 2^k)...

  • 欧几里得扩展-逆元求解

    核心公式:xa + yb = gcd(a,b) 逆元为上述公式的特殊情况(gcd(a,b)== 1,a和b互为质数...

  • 数学专题整理

    数学专题整理 学习清单 快速幂、矩阵、数论(逆元、容斥、素数筛、高斯消元)、FFT 归纳整理 GCD与LCM GC...

  • 逆元

    什么是逆元 来自一个大佬的解释,反正我是看懂了。。 乘法逆元: 模p意义下,一个数a如果有逆元x,那么除以a相当于...

  • 模板-->单变元模线性方程

    如果有相应的OJ题目,欢迎同学们提供相应的链接 相关链接 所有模板的快速链接 扩展欧几里得extend_gcd模板...

  • 模板-->中国剩余定理[互质版本]

    如果有相应的OJ题目,欢迎同学们提供相应的链接 相关链接 所有模板的快速链接 扩展欧几里得extend_gcd模板...

  • 扩展GCD(求逆元,解同余方程等等)

    首先要知道gcd函数的基本性质:gcd(a,b)=gcd(b,a)=gcd(|a|,|b|)=gcd(b,a%b)...

  • 20171208daliy

    1. 无符号数加法 溢出和-2^w 2.无符号数求反。 x=0 逆元=0 x>0 逆元=2^w-x

  • extend , $.extend

    extend $.extend(为jquery类添加静态方法)

  • 乘法逆元

    若整数b,m互质,并且,则存在一个整数x,使得。称x为b的模m乘法逆元,记为。因为,所以。计算乘法逆元有两个方法费...

网友评论

    本文标题:poj2115(extend gcd + 逆元)

    本文链接:https://www.haomeiwen.com/subject/ghykuttx.html