计算一个数字的基数 K 表示中 0 的个数
给定一个数字N,任务是在给定数字的基数K表示中找到零的数量,其中K > 1 。
例子:
Input: N = 10, K = 3
Output: 1
Explanation: Base 3 representation of 10 is 101.
Hence the number of 0’s in 101 is 1.
Input: N = 8, K = 2
Output: 3
Explanation: Base 2 representation of 8 is 1000.
Hence the number of 0’s in 1000 is 3.
方法:这个问题可以通过将数字转换为基数K形式来解决。
将一个以10为底的数字N转换为以K为底的伪代码:
allDigits = “”
While N > 0:
digit = N%k
allDigits.append(digit)
N /= k
number_in_base_K = reversed(allDigits)
按照下面提到的步骤来实施该方法:
- 开始形成K基数,如上面的伪代码所示。
- 不是形成数字,而是在循环的每次通过中检查当前形成的数字是否为0 。
- 返回 0 的总数。
下面是上述方法的实现。
C++
// C++ code to implement the approach
#include
using namespace std;
// Function to count the number of zeros
// in K base representation of N
int countZero(int N, int K)
{
// Making a variable to store count
int count = 0;
// Looping till n becomes 0
while (N > 0) {
// Check if the current digit
// is 0 or not.
if (N % K == 0)
count++;
N /= K;
}
return count;
}
// Driver code
int main()
{
int N = 8;
int K = 2;
// Function call
cout << countZero(N, K) << endl;
return 0;
}
输出
3
时间复杂度: O(1)
辅助空间: O(1)