在本文中,我们将讨论找到可被 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
您可以通过检查从 1 开始的 k 的每个值来解决此问题,其中 R(k) 能否被 N 整除。但是使用此解决方案,我们将无法确定 N 是否可被 R(k) 的任何值整除。这将使程序变得过于复杂,甚至可能无法运行。
解决该程序的有效方法是,
#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 等)编写此代码。我们希望本文对您有所帮助。
以上是重复单位可整除性(使用C++)的详细内容。更多信息请关注PHP中文网其他相关文章!