Equação de Congruência Linear ----------------------------- Teoria dos Números (Modelo)

Dados n conjuntos de dados ai, bi, mi, encontre um xi para cada conjunto de números para satisfazer ai * xi≡bi (mod mi) e, se não houver solução, a saída será impossível.

Formato de entrada A
primeira linha contém o número inteiro n.

As próximas n linhas, cada linha contém um conjunto de dados ai, bi, mi.

Formato de saída
Um total de n linhas é emitido. Cada grupo de dados gera um número inteiro para representar um xi que atende às condições.Se não houver solução, ele será impossível.

Cada conjunto de resultados de dados ocupa uma linha, os resultados podem não ser exclusivos e qualquer resultado que atenda às condições pode ser gerado.

A resposta de saída deve estar dentro do intervalo int.

Intervalo de dados
1≤n≤105,
1≤ai, bi, mi≤2 ∗ 109
Amostra de entrada:
2
2 3 6
4 3 5
Amostra de saída:
impossível
7


#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t,a,b,m,x,y;
int exgcd(int a,int b,int &x,int &y)
{
    if(!b)
    {
        x=1;y=0;
        return a;
    }
    int d=exgcd(b,a%b,x,y);
    int tmp=x;
    x=y;
    y=tmp-a/b*y;
    return d;
}
int main()
{
    cin>>t;
    while(t--)
    {
        cin>>a>>b>>m;
        int d=exgcd(a,m,x,y);
       // cout<<d<<endl;
        if(b%d!=0)  cout<<"impossible"<<endl;
        else 
        {
            cout<<(ll)x*(b/d)%m<<endl; //扩大了(b/d)倍
        }
    }
}
Publicado 572 artigos originais · elogiados 14 · 10.000+ visualizações

Acho que você gosta

Origin blog.csdn.net/qq_43690454/article/details/105249807
Recomendado
Clasificación