给定两个整数N和B ,任务是找到最多N个数字的Base B的自然数。
例子:
Input: N = 2, B = 10
Output: 99
Explanation:
1, 2, 3, 4, 5, 6, 7, 8, 9 are 1 digit Natural numbers of Base 10.
10, 11, 12………99 are 2 digit Natural numbers of Base 10
So, total = 9 + 90 = 99
Input: N = 2, B = 16
Output: 255
Explanation:
There are a total of 240 two digit hexadecimal numbers and 15 one digit hexadecimal numbers.
Therefore, 240 + 15 = 255.
方法:仔细观察以B为底的N位数字的计数是一个几何级数,第一个项为(B – 1),且公共比率为B。
所以,
Nth term = Number of natutal numbers of N digits in Base B = (B – 1) * BN – 1
最后,通过从1到N的循环迭代并使用上述公式计算第i个项的总和,可以找出基数B中最多N个数字的所有自然数。
下面是上述方法的实现:
C++
// C++ implementation to find the count
// of natural numbers upto N digits
#include
using namespace std;
// Function to return the count of
// natural numbers upto N digits
int count(int N, int B)
{
int sum = 0;
// Loop to iterate from 1 to N
// and calculating number of
// natural numbers for every 'i'th digit.
for (int i = 1; i <= N; i++) {
sum += (B - 1) * pow(B, i - 1);
}
return sum;
}
// Driver Code
int main()
{
int N = 2, B = 10;
cout << count(N, B);
return 0;
}
Java
// Java implementation to find the count
// of natural numbers upto N digits
class GFG{
// Function to return the count of
// natural numbers upto N digits
static int count(int N, int B)
{
int sum = 0;
// Loop to iterate from 1 to N
// and calculating number of
// natural numbers for every 'i'th digit.
for (int i = 1; i <= N; i++){
sum += (B - 1) * Math.pow(B, i - 1);
}
return sum;
}
// Driver Code
public static void main(String[] args)
{
int N = 2, B = 10;
System.out.print(count(N, B));
}
}
// This code is contributed by gauravrajput1
Python3
# Python3 implementation to find the count
# of natural numbers up to N digits
from math import pow
# Function to return the count of
# natural numbers upto N digits
def count(N, B):
sum = 0
# Loop to iterate from 1 to N
# and calculating number of
# natural numbers for every 'i'th digit.
for i in range(1, N+1):
sum += (B - 1) * pow(B, i - 1)
return sum
# Driver Code
if __name__ == '__main__':
N = 2
B = 10
print(int(count(N, B)))
# This code is contributed by Bhupendra_Singh
C#
// C# implementation to find the count
// of natural numbers upto N digits
using System;
using System.Collections.Generic;
class GFG{
// Function to return the count of
// natural numbers upto N digits
static int count(int N, int B)
{
int sum = 0;
// Loop to iterate from 1 to N
// and calculating number of
// natural numbers for every
// 'i'th digit.
for(int i = 1; i <= N; i++)
{
sum += (int)((B - 1) * Math.Pow(B, i - 1));
}
return sum;
}
// Driver Code
public static void Main(String[] args)
{
int N = 2, B = 10;
Console.Write(count(N, B));
}
}
// This code is contributed by amal kumar choubey
Javascript
输出:
99
时间复杂度: O(N)