이 문제에서는 세 개의 숫자 a, b, M이 주어집니다. 우리가 해야 할 과제는 두 수의 합을 M으로 나눈 나머지(modulo)를 구하는 프로그램을 작성하는 것입니다.
예제로 문제 이해하기
입력: a = 14, b = 54, m = 7 출력: 5 설명: 14 + 54 = 68, 68 % 7 = 5
해결 접근 방법
이 문제는 아주 간단하게 해결할 수 있습니다. 먼저 a와 b를 더한 후, 그 합을 M으로 나누었을 때의 나머지를 출력하면 됩니다. C++에서는 나머지 연산자(%)를 사용해 손쉽게 구할 수 있습니다.
구현 예제
아래 프로그램은 위 해결 방법이 실제로 어떻게 동작하는지 보여줍니다.
#include <iostream>
using namespace std;
int moduloSum(int a, int b, int M) {
return (a + b) % M;
}
int main() {
int a = 35, b = 12, M = 7;
cout<<"두 수의 합에 대한 나머지는 "<<moduloSum(a,b,M);
return 0;
}실행 결과
두 수의 합에 대한 나머지는 5
참고: 오버플로우 방지 팁
a와 b의 값이 매우 커서 두 수를 더했을 때 int 자료형의 범위를 초과할 가능성이 있다면, 다음과 같이 각 수를 먼저 M으로 나눈 나머지를 구한 후 다시 더하는 방식이 안전합니다.
int safeModuloSum(int a, int b, int M) {
return ((a % M) + (b % M)) % M;
}이렇게 하면 덧셈 결과가 M보다 크더라도 자료형 범위를 넘지 않으므로, 큰 수를 다룰 때 발생할 수 있는 오버플로우 문제를 예방할 수 있습니다.