알고리즘

<백준> 6064번 자바 알고리즘

changha. 2022. 1. 9. 22:53
import java.util.*;

public class Main
{   
    static int N, M, x, y, T;
    
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		T = in.nextInt();
		
		for(int i=0; i < T; i++){
		    M = in.nextInt();
		    N = in.nextInt();
		    x = in.nextInt();
		    y = in.nextInt();
             if(y == N){ // N으로 나눴을 때 y 가 0일 경우를 대비하여 먼저 y를 0으로 바꾼다 
		        y = 0;
		    }
		    
		    int MAXxy = M * N; // 가장 최대
		    int idx = 0;
		    int res = -1;
		    while(true){
		        if((M * idx + x) % N == y){
		            res = M * idx + x;
		            break;
		        }
		        
		        if(M * idx + x> MAXxy){ // 해가 없을 때 
		            break;
		        }
		        idx++;
		    }
		    System.out.println(res);
		}
	}
	

}

조건 1.

M으로 나눴을 때 항상 x 를 식으로 표현 => M * idx + x

조건 2.

조건 1에 부합하면서 N을 나눴을 때 y