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

C++ 프로그램에서 큰 수의 경우 37로 나눌 수 있음

<시간/>

이 튜토리얼에서는 주어진 큰 수가 37로 나누어 떨어지는지 여부를 확인하는 프로그램을 작성할 것입니다.

우리는 여기서 약간의 수학을 사용할 것입니다. 문제를 해결하는 단계를 살펴보겠습니다.

  • 번호를 초기화합니다.

  • 주어진 숫자의 길이가 3의 배수가 아니면 숫자의 시작 부분에 0을 추가하여 길이가 3의 배수가 되도록 합니다.

  • 숫자를 3자리로 나누어 더합니다.

  • 결과 합계가 37의 배수이면 주어진 숫자는 37의 배수입니다.

  • 결과 합이 4자리 숫자이면 2부터 단계를 반복합니다.

  • 주어진 숫자가 37의 배수인지 아닌지를 출력하십시오.

코드를 봅시다.

#include <bits/stdc++.h>
using namespace std;
bool isNumberDivisibleBy37(string number, int n) {
   if (number == "0") {
      return 0;
   }
   if (n % 3 == 1){
      number = "00"+ number;
      n += 2;
   }
   else if (n % 3 == 2){
      number = "0"+ number;
      n += 1;
   }
   int groups_sum = 0;
   while (n != 0){
      string group = number.substr(n - 3, n);
      int group_value = (group[0] - '0') * 100 + (group[1] - '0') * 10 + (group[2] - '0') * 1;
      groups_sum += group_value;
      n = n - 3;
   }
   if (groups_sum >= 1000) {
      string new_number = to_string(groups_sum);
      return isNumberDivisibleBy37(new_number, new_number.length());
   }
   else {
      return groups_sum % 37 == 0;
   }
}
int main() {
   string number = "4048675309";
   if (isNumberDivisibleBy37(number, 10)) {
      cout << "Yes" << endl;
   }
   else {
      cout << "No" << endl;
   }
   return 0;
}

출력

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

Yes

결론

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