now0204 2023. 4. 10. 15:34
public class Main{
    
    public static void main(String[] args) throws Exception {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String[] input =br.readLine().split(" ");
        int[] arr = new int[input.length];
        for(int i=0; i<input.length;i++){
            arr[i] = Integer.parseInt(input[i]);
        }
        bw.write((arr[0]+arr[1])%arr[2]+"\n");
        bw.write((arr[0]%arr[2]+arr[1]%arr[2])%arr[2]+"\n");
        bw.write((arr[0]*arr[1])%arr[2]+"\n");
        bw.write(((arr[0]%arr[2])*(arr[1]%arr[2]))%arr[2]+"");

        bw.flush();
        bw.close();
        
    }
}

 

-나머지에 대한 

(a+b)%m = ((a%m)+(b%m))%m 

(a*b)%m = ((a%m)*(b%m))%m

(a-b)%m = ((a%m)-(b%m)+m)%m; //음수나머지 나올 수 있다 -> +m한번 해주면 양수로만 나옴

 

*C(JAVA)와 python 나머지 구하는 방식 차이 c와 java는 나머지를 버림, python은 내림을 이용한다.

8/3 = 2.666 -> 버리던, 내리던 2이다.

8/-3 = -2.666 -> 버리면 -2, 내리면 -3 각각의 상황에 따라 

 

(버림)8 = -3 *-2 (+2)  --- (내림)8= -3*-3 (-1) 

각자 나머지가 다르게 나온다. 

버리는 언어는 나머지의 부호가 나눠지는 수에 달려있고, 내리는 언어는 나머지의 부호가 나누는 수에 달려있다.

둘 중 어느경우더라도 음수 나머지를 허용하고 싶지 않다면, 몫을 올림으로 연산하도록 하면 된다!

 

-8/3 = 3*-2 -2 --->올림--> 3*-3 +1 

8/-3= -3*-3 (-1)-->올림-->-3*-2 +2