/******************************************************************************
BOJ 페르마 소정리 20412
X1 = (a × Seed + c) % m
X2 = (a × X1 + c) % m
a ? c ?
*******************************************************************************/
#include <iostream>
using namespace std;
using ll = long long;
ll m,s,x1,x2;
ll mul(ll x, ll m, ll d){
if(m == 0) return 1;
if(m == 1) return x;
ll p = mul(x , m/2,d);
if(m % 2 == 0) return (p*p)%d;
else return ((p*p)%d * x)%d;
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>m>>s>>x1>>x2;
ll a = ((x1 - x2)* (mul(s-x1,m-2,m)% m))% m;
if(a < 0) a += m;
ll c = (x1 % m - (a * s) % m) % m;
if(c < 0) c+= m;
cout<<a<<" "<<c;
return 0;
}
'algorithm' 카테고리의 다른 글
dp연습1 (0) | 2022.08.24 |
---|---|
[BOJ] 3178 코코스 (0) | 2022.08.23 |
[BOJ] 9938 방청소 (0) | 2022.08.05 |
유클리드 호제법, 모듈로 역원 (0) | 2022.08.03 |
13335 트럭 (0) | 2022.07.24 |