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

C++에서 큰 수를 13으로 나눌 수 있는지 확인

<시간/>

여기서 우리는 숫자가 13의 배수인지 아닌지 확인하는 방법을 볼 것입니다. 이 경우 숫자는 매우 큰 숫자입니다. 그래서 우리는 숫자를 문자열로 넣습니다.

숫자가 다음 상황을 충족하는 경우 숫자는 13으로 나눌 수 있습니다. -

  • 교번 합계를 얻는 경우에만 숫자를 13으로 나눌 수 있습니다. 크기 3의 블록은 2 – 911 + 285 =-650이며 13으로 나눌 수 있습니다.
  • 숫자는 나머지에 4를 곱한 마지막 숫자도 13으로 나눌 수 있는 경우에만 13으로 나눌 수 있습니다. 예를 들어 2353을 고려합니다. 위의 규칙을 적용하면 235 + 3*4 =247. 다음 반복에서는 24 + 7*4 =52입니다. 52는 13으로 나누어 떨어지기 때문에 주어진 숫자는 13으로 나누어집니다.

#include <bits/stdc++.h>
using namespace std;
bool isDiv13(string num){
   int length = num.size();
   if (length == 1 && num[0] == '0')
      return true;
   if (length % 3 == 1) { //when length is not divisible by 3, remainder is 1
      num +="00";
      length += 2;
   } else if (length % 3 == 2){ //when length is not divisible by 3, remainder is 2
      num += "0";
      length += 1;
   }
   int sum = 0, p = 1;
   for (int i = length - 1; i >= 0; i--) {
      int set = 0;
      set += (num[i--] - '0');
      set += (num[i--] - '0') * 10;
      set += (num[i] - '0') * 100;
      sum = sum + set * p;
      p *= (-1);
   }
   sum = abs(sum);
   return (sum % 13 == 0);
}
int main() {
   string num = "83959092724";
   if(isDiv13(num)){
      cout << "Divisible";
   } else {
      cout << "Not Divisible";
   }
}

출력

Divisible