标签:
自己写的不定方程的第一题
题目简述(其实是为了方便后面的描述):
已知kx+n=By k.n.B 已知 且k.B互质 求y%k
-----------------------------------------------------------------------------------------------------------------------------
首先 我们可以把这个二元一次不定方程移项
得到 kx+B(-y)=-n
由于k.B互质 所以kx+B(-y)=1(gcd(k,B))的解可以用exgcd求
求出一组解后((-y)*(-n)/(-1)%k+k)%k即为最终答案
至于exgcd 链接中的讲解还是很不错的
http://www.cnblogs.com/ka200812/archive/2011/09/02/2164404.html
-----------------------------------------------------------------------------------------------------------------------------
#include <bits/stdc++.h> using namespace std; const int k=9973; int x,y; int exgcd(int a,int b) { if(!b) { x=1; y=0; return a; } int d=exgcd(b,a%b); int t=x; x=y; y=t-(a/b)*y; return d; } int main() { int t,n,B; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&B); exgcd(k,B); y=((y*n%k)+k)%k; printf("%d\n",y); } }
标签:
原文地址:http://www.cnblogs.com/sagitta/p/4765752.html