線性同餘方程(同餘+擴展歐幾里得模板)

給定n組數據ai,bi,mi對於每組數求出一個xi,使其知足aixibi(mod mi),若是無解則輸出impossible。java

輸入格式

第一行包含整數nspa

接下來n行,每行包含一組數據ai,bi,micode

輸出格式

輸出共n行,每組數據輸出一個整數表示一個知足條件的xi,若是無解則輸出impossible。xml

每組數據結果佔一行,結果可能不惟一,輸出任意一個知足條件的結果都可。blog

輸出答案必須在int範圍以內。class

思路:

 代碼:import

import java.util.Scanner;

public class Main{
        static int x,y;
        static int exgcd(int a,int b){
                if(b==0){
                        x=1;
                        y=0;
                        return a;
                }
                int d=exgcd(b,a%b);
                int t=x;
                x=y;
                y=t-a/b*y;
                return d;
        }
         public static void main(String[] args) {
                 Scanner scan=new Scanner(System.in);
                 int t=scan.nextInt();
                 while(t-->0){
                         int a=scan.nextInt();
                         int b=scan.nextInt();
                         int m=scan.nextInt();
                         int d=exgcd(a,m);
                         if(b%d!=0) System.out.println("impossible");
                         else System.out.println((long)x*(b/d)%m);//注意超int,用long
                 }
        }
 }
相關文章
相關標籤/搜索