本文主要是介绍POJ 2115 C Looooops 模线性方程(扩展欧几里得),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题解:转换一下。和青蛙那题差不多。
#include<iostream>
#include<cmath>
using namespace std;__int64 Egcd ( __int64 a, __int64 b, __int64 &x, __int64 &y )
{__int64 tmp, ret;if ( b == 0 ){x = 1, b = 0;return a;}ret = Egcd ( b, a%b, x, y );tmp = x, x = y, y = tmp - a / b * y;return ret;
}int main()
{__int64 A, B, C, K, x, y;while ( 1 ){scanf("%I64d%I64d%I64d%I64d",&A,&B,&C,&K);if ( A+B+C+K == 0 ) break;__int64 M = (__int64)pow(2.0,K+0.0);__int64 a = C, b = M, c = B - A;__int64 d = Egcd ( a, b, x, y );if ( c % d != 0 ){printf("FOREVER\n");continue;}x = (c*x/d)%(b/d);if ( x < 0 )x += b/d;printf("%I64d\n",x);}return 0;
}
这篇关于POJ 2115 C Looooops 模线性方程(扩展欧几里得)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!