이 기사에서는 N으로 나눌 수 있는 반복 단위의 수를 찾는 방법에 대해 설명합니다. 반복 단위는 1의 반복 단위입니다. R(k)를 반복 단위라고 하고 여기서 k는 1의 길이입니다. 예:R(4) =1111. 따라서 R(k)가 N으로 나누어지는 최소 k 수를 찾아야 합니다. 예를 들어 -
Input : N = 13 Output : k = 6 Explanation : R(6) i.e 111111 is divisible by 13. Input : N = 31 Output : k = 15
해결책을 찾기 위한 접근 방식
R(k)가 N으로 나눌 수 있는 1부터 시작하여 k에 대한 각 값을 확인하여 이 문제에 접근할 수 있습니다. 그러나 이 솔루션을 사용하면 N이 R(k)의 값으로 나눌 수 있는지 여부를 찾을 수 없습니다. 이것은 프로그램을 너무 복잡하게 만들고 작동하지 않을 수도 있습니다.
이 프로그램의 솔루션을 위한 효율적인 접근 방식은,
- N이 10과 소소수인지 확인합니다.
- 그렇지 않으면 R(k)는 k 값에 대해 N으로 나눌 수 없습니다.
- 예인 경우 각 반복 단위 R(1), R(2), R(3)... 등에 대해 R(i)와 N을 나눈 나머지를 계산하면 n이 됩니다. 나머지 수입니다.
- R(i) 및 R(j)에 대해 동일한 나머지 값을 찾으십시오. 여기서 R(i) 및 R(j)는 두 개의 반복 단위이므로 R(i) - R(j)는 N으로 나눌 수 있습니다.
- aR(i)와 R(j)의 차이는 반복 단위에 10의 거듭제곱을 곱한 값이지만 10과 N은 상대적으로 소수이므로 R(k)는 N으로 나눌 수 있습니다.
예시
#include <bits/stdc++.h> using namespace std; int main() { int N = 31; int k = 1; // checking if N is coprime with 10. if (N % 2 == 0 || N % 5 == 0){ k = 0; } else { int r = 1; int power = 1; // check until the remainder is divisible by N. while (r % N != 0) { k++; power = power * 10 % N; r = (r + power) % N; } } cout << "Value for k : "<< k; return 0; }
출력
Value for k : 15
결론
이 기사에서 우리는 R(k)에 대한 k 값을 찾는 방법에 대해 논의합니다. 여기서 R(k)는 주어진 N으로 나눌 수 있는 반복 단위입니다. 우리는 k 값을 찾는 낙관적인 방법에 대해 논의했습니다. 우리는 또한 이 문제를 해결하기 위해 C++ 코드에 대해 논의했습니다. 이 코드는 Java, C, Python 등과 같은 다른 언어로 작성할 수 있습니다. 이 문서가 도움이 되기를 바랍니다.