Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 세 숫자로 나눌 수 있는 가장 큰 N 자리 숫자

<시간/>

이 튜토리얼에서는 주어진 3개의 숫자로 나누어 떨어지는 가장 큰 n자리 숫자를 찾는 프로그램을 작성할 것입니다.

문제를 해결하는 단계를 살펴보겠습니다.

  • n과 함께 3개의 숫자를 초기화합니다.
  • 세 숫자의 LCM을 구합니다.
  • 가장 큰 수를 n자리로 저장합니다.
  • 가장 큰 숫자가 n으로 나누어 떨어지는 경우 반환합니다.
  • 또는 위 단계에서 나머지를 뺀 숫자를 확인합니다.

예시

코드를 봅시다.

#include <bits/stdc++.h>
using namespace std;
int LCM(int x, int y, int z) {
   int ans = ((x * y) / (__gcd(x, y)));
   return ((z * ans) / (__gcd(ans, z)));
}
int findNumber(int n, int x, int y, int z) {
   int lcm = LCM(x, y, z);
   int largestNDigitNumber = pow(10, n) - 1;
   int remainder = largestNDigitNumber % lcm;
   if (remainder == 0) {
      return largestNDigitNumber;
   }
   largestNDigitNumber -= remainder;
   if (largestNDigitNumber >= pow(10, n - 1)) {
      return largestNDigitNumber;
   }
   return 0;
}
int main() {
   int n = 4, x = 6, y = 7, z = 8;
   int result = findNumber(n, x, y, z);
   if (result != 0) {
      cout << result << endl;
   }else {
      cout << "Not possible" << endl;
   }
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

9912

결론

튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.