이 튜토리얼에서는 주어진 큰 수가 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
결론
튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.