Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 두 수의 합을 M으로 나눈 나머지(모듈로) 구하는 방법

이 문제에서는 세 개의 숫자 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보다 크더라도 자료형 범위를 넘지 않으므로, 큰 수를 다룰 때 발생할 수 있는 오버플로우 문제를 예방할 수 있습니다.