思路:
可以把式子变为 k*m = x*n +1;
这样就可以用扩展欧几里的算法了
gcd(m,n) = k*m + x*n;
求k, 如果k的值小于0,需要加上n
CODE
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define NN 500004
#define NL 1000
using namespace std;
void gcd(int a,int b, int &x, int &y)
{
if(!b)
{
x = 1; y = 0;
}
else
{
gcd(b,a%b,y,x);
y -= x*(a/b);
}
}
int main()
{
int k , x;
int n, m;
while(~scanf("%d%d",&m,&n))
{
k = x = 1;
gcd(m,n,k,x);
if(k < 0)
k = k+n;
printf("%d\n",k);
}
return 0;
}

本文介绍了一个使用扩展欧几里得算法解决特定数学问题的实例。该算法用于求解形如k*m=x*n+1的方程,通过找到使得等式成立的k值来解决问题。文中提供了一段C语言实现的代码示例。

被折叠的 条评论
为什么被折叠?



