给定以十进制为底的数字N,请以任意底数(底为b)查找其位数

2021年4月5日16:07:21 发表评论 851 次浏览

本文概述

给定以10为底的数字n, 请找到以b为底的数字位数。

限制条件:

N \ in \ mathbb {W}

整个

例子 :

Input : Number = 48 
        Base = 4
Output: 3
Explanation : (48)10 = (300)4

Input : Number = 1446
        Base = 7
Output: 4
Explanation : (446)10 = (4134)7

一种简单的方法: 将十进制数转换成给定的基数r,然后数位数。

一种有效的方法: 它驻留在该数的底数和该数的位数之间的关系。

通常:令n为正整数。底数

b

代表

ñ

具有

d

如果数字

b ^ {d-1} \ leq n <b ^ d

, 如果是这样的话

d-1 \ leq \ log_b n <d

or

\ lfloor log_b n \ rfloor = d-1

因此, 以n为底的b表示形式的位数是

\ lfloor log_b N \ rfloor + 1 = \ left \ lfloor \ dfrac {ln N} {ln b} \ right \ rfloor + 1 = \ left \ lfloor \ dfrac {log N} {log b} \ right \ rfloor + 1

在上面的方程中, 使用了基本变化对数性质。因此, 我们计算要计算位数的那个底数的对数。取其底值, 然后加1。

该想法可以进一步用于在基数r中找到基数b的给定数n的位数。所有要做的就是转换以10为底的数字, 然后应用上面的查找数字公式。当数字以10为底时, 计算任何底数的对数会更容易。

C ++

// C++ program to Find Number of digits 
// in base b.
#include <iostream>
#include <math.h> 
using namespace std;
  
// function to print number of
// digits
void findNumberOfDigits( long n, int base)
{
     // Calculating log using base
     // changing property and then
     // taking it floor and then 
     // adding 1.
     int dig = ( int )( floor ( log (n) / 
                          log (base)) + 1); 
      
     // printing output
     cout << "The Number of digits of "
          << "Number " << n << " in base "
          << base << " is " << dig;
}
  
// Driver method 
int main()
{
     // taking inputs
     long n = 1446;
     int base = 7;
      
     // calling the method
     findNumberOfDigits(n, base);
     return 0;
}
  
// This code is contributed by Manish Shaw 
// (manishshaw1)

Java

// Java program to Find Number
// of digits in base b.
class GFG {
      
     // function to print number of digits
     static void findNumberOfDigits( long n, int base)
     {
          
         // Calculating log using base changing
         // property and then taking it 
         // floor and then adding 1.
         int dig = ( int )(Math.floor(
                         Math.log(n) / Math.log(base))
                         + 1 ); 
          
          
         // printing output
         System.out.println( "The Number of digits of Number "
                             + n + " in base " + base 
                             + " is " + dig);
     }
  
     // Driver method    
     public static void main(String[] args)
     {
         // taking inputs
         long n = 1446 ;
         int base = 7 ;
          
         // calling the method
         findNumberOfDigits(n, base);
     }
}

Python3

# Python3 program to Find Number of digits 
# in base b.
  
import math
  
# function to print number of
# digits
def findNumberOfDigits(n, base):
      
     # Calculating log using base
     # changing property and then
     # taking it floor and then 
     # adding 1.
     dig = (math.floor(math.log(n) /
                  math.log(base)) + 1 )
      
     # printing output
     print ( "The Number of digits of"
       " Number {} in base {} is {}"
             . format (n, base, dig))
  
# Driver method 
  
# taking inputs
n = 1446
base = 7
  
# calling the method
findNumberOfDigits(n, base)
  
# This code is contributed by 
# Manish Shaw (manishshaw1)

C#

// C# program to Find Number of digits 
// in base b.
using System;
  
class GFG {
      
     // function to print number of
     // digits
     static void findNumberOfDigits( long n, int b)
     {
         // Calculating log using base
         // changing property and then
         // taking it floor and then 
         // adding 1.
         int dig = ( int )(Math.Floor(
           Math.Log(n) / Math.Log(b)) + 1); 
          
         // printing output
         Console.Write( "The Number of digits"
            + " of Number " + n + " in base "
                         + b + " is " + dig);
     }
  
     // Driver method 
     public static void Main()
     {
         // taking inputs
         long n = 1446;
         int b = 7;
          
         // calling the method
         findNumberOfDigits(n, b);
     }
}
  
// This code is contributed by Manish Shaw 
// (manishshaw1)

的PHP

<?php
// PHP program to Find Number 
// of digits in base b.
      
// function to print
// number of digits
function findNumberOfDigits( $n , $b )
{
     // Calculating log using base
     // changing property and then
     // taking it floor and then 
     // adding 1.
     $dig = (int)( floor (log( $n ) / 
                        log( $b )) + 1); 
      
     // printing output
     echo ( "The Number of digits" .
                " of Number " . $n .
                   " in base " . $b .
                     " is " . $dig );
}
  
// Driver Code
$n = 1446;
$b = 7;
      
// calling the method
findNumberOfDigits( $n , $b );
  
// This code is contributed by 
// Manish Shaw (manishshaw1)
?>

输出:

The Number of digits of Number 1446 in base 7 is 4

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: