자료구조와 알고리즘/문제풀기
백준 10430 - 나머지
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