logo

بمعرفة الرقم n، أوجد أول أرقام k من n^n

بالنظر إلى رقم n، ابحث عن أول أرقام k من nنحيث k هي قيمة أقل من عدد الأرقام في nن 
أمثلة :
 

   Input :    n = 10 k = 2    Output :   10 The first 2 digits in 1010 are 10.    Input :    n = 144 k = 6    Output :   637087    Input:    n = 1250 k = 5    Output:    13725 


 


ويمكن حل المشكلة بعدة طرق منها اثنان:
الطريقة الأولى (بسيطة): طريقة بسيطة تتضمن حساب القيمة الفعلية ثم القسمة على 10 حتى نحصل على الإجابة المطلوبة. ومع ذلك، لا يمكن لهذه الطريقة أن تأخذ مدخلات أكبر من n = 15 لأنها قد تتسبب في تجاوز السعة. 
 



C++
// C++ program to find the first k digits of n^n #include    using namespace std; // function that manually calculates n^n and then // removes digits until k digits remain unsigned long long firstkdigits(int n int k) {  unsigned long long product = 1;  for (int i = 0 ; i < n ; i++)  product *= n;  // loop will terminate when there are only  // k digits left  while ((int)(product / pow(10 k)) != 0)  product = product / 10;  return product; } //driver function int main() {  int n = 15;  int k = 4;  cout << firstkdigits(n k);  return 0; } 
Java
// Java program to find the first k digits of n^n public class Digits {  // function that manually calculates n^n and then  // removes digits until k digits remain  static long firstkdigits(int n int k)  {  long product = 1;  for (int i = 0 ; i < n ; i++)  product *= n;    // loop will terminate when there are only  // k digits left  while ((int)(product / Math.pow(10 k)) != 0)  product = product / 10;  return product;  }    public static void main(String[] args)  {  int n = 15;  int k = 4;  System.out.println(firstkdigits(n k));  } } //This code is contributed by Saket Kumar 
Python 3
# Python 3 program to find the  # first k digits of n^n # function that manually calculates  # n^n and then removes digits until # k digits remain def firstkdigits(n k): product = 1 for i in range(n ): product *= n # loop will terminate when there  # are only k digits left while ((product // pow(10 k)) != 0): product = product // 10 return product # Driver Code n = 15 k = 4 print(firstkdigits(n k)) # This code is contributed  # by ChitraNayal 
C#
// C# program to find the // first k digits of n^n using System; class Digits {  // function that manually calculates  // n^n and then removes digits until  // k digits remain  static long firstkdigits(int n int k)  {  long product = 1;  for (int i = 0 ; i < n ; i++)  product *= n;    // loop will terminate when there   // are only k digits left  while ((int)(product / Math.Pow(10 k)) != 0)  product = product / 10;    return product;  }    // Driver code  public static void Main()  {  int n = 15;  int k = 4;  Console.Write(firstkdigits(n k));  } } // This code is contributed by nitin mittal. 
PHP
 // PHP program to find the // first k digits of n^n // function that manually  // calculates n^n and then // removes digits until k // digits remain function firstkdigits($n $k) { $product = 1; for ($i = 0 ; $i < $n ; $i++) $product *= $n; // loop will terminate when  // there are only k digits left while ((int)($product / pow(10 $k)) != 0) $product = (int) $product / 10; return floor($product); } // Driver Code $n = 15; $k = 4; echo firstkdigits($n $k); // This code is contributed by aj_36 ?> 
JavaScript
<script> // Javascript program to find the first k digits of n^n    // function that manually calculates n^n and then  // removes digits until k digits remain  function firstkdigits(nk)  {  let product = 1;  for (let i = 0 ; i < n ; i++)  product *= n;    // loop will terminate when there are only  // k digits left  while (Math.floor(product / Math.pow(10 k)) != 0)  product = Math.floor(product / 10);  return product;  }    let n = 15;  let k = 4;  document.write(firstkdigits(n k));    // This code is contributed by avanitrachhadiya2155 </script> 

الإخراج : 
 

4378


الطريقة الثانية: تتضمن الطريقة التالية استخدام اللوغاريتمات لحساب أرقام k الأولى. الطريقة والخطوات موضحة أدناه:
 

  1. دع المنتج = نن. خذ اللوغاريتم ذو الأساس 10 على طرفي المعادلة. نحصل على السجل10(المنتج) = السجل10ن) والتي يمكننا كتابتها أيضًا كـ n*log10(ن)
  2. في هذا المثال نحصل على السجل10(المنتج) = 3871.137516. يمكننا تقسيم RHS إلى 3871 + 0.137516 بحيث يمكن الآن كتابة معادلتنا على هيئة log10(المنتج) = 3871 + 0.137516
  3. ارفع كلا الطرفين بالأساس 10 وباستخدام المثال أعلاه نحصل على المنتج = 103871× 100.137516. 103871لن يحدث فرقًا في أرقامنا الأولى لأنه يغير النقاط العشرية فقط. نحن مهتمون بالجزء التالي 100.137516لأن هذا سيحدد الأرقام القليلة الأولى. 
    في هذه الحالة قيمة 100.137516هو 1.37251.
  4. وبالتالي فإن الأرقام الخمسة الأولى المطلوبة ستكون 13725.


 

C++
//C++ program to generate first k digits of // n ^ n #include    using namespace std; // function to calculate first k digits // of n^n long long firstkdigits(int nint k) {  //take log10 of n^n. log10(n^n) = n*log10(n)  long double product = n * log10(n);  // We now try to separate the decimal and  // integral part of the /product. The floor  // function returns the smallest integer  // less than or equal to the argument. So in  // this case product - floor(product) will  // give us the decimal part of product  long double decimal_part = product - floor(product);  // we now exponentiate this back by raising 10  // to the power of decimal part  decimal_part = pow(10 decimal_part);  // We now try to find the power of 10 by which  // we will have to multiply the decimal part to  // obtain our final answer  long long digits = pow(10 k - 1) i = 0;  return decimal_part * digits; } // driver function int main() {  int n = 1450;  int k = 6;  cout << firstkdigits(n k);  return 0; } 
Java
// Java program to find the first k digits of n^n import java.util.*; import java.lang.*; import java.io.*; class KDigitSquare {  /* function that manually calculates   n^n and then removes digits until   k digits remain */  public static long firstkdigits(int n int k)  {  //take log10 of n^n.   // log10(n^n) = n*log10(n)  double product = n * Math.log10(n);    /* We will now try to separate the decimal   and integral part of the /product. The   floor function returns the smallest integer  less than or equal to the argument. So in  this case product - floor(product) will  give us the decimal part of product */  double decimal_part = product - Math.floor(product);    // we will now exponentiate this back by   // raising 10 to the power of decimal part  decimal_part = Math.pow(10 decimal_part);    /* We now try to find the power of 10 by   which we will have to multiply the decimal   part to obtain our final answer*/  double digits = Math.pow(10 k - 1) i = 0;    return ((long)(decimal_part * digits));  }  // driver function  public static void main (String[] args)  {  int n = 1450;  int k = 6;  System.out.println(firstkdigits(nk));  } } /* This code is contributed by Mr. Somesh Awasthi */ 
Python3
# Python3 program to generate k digits of n ^ n  import math # function to calculate first k digits of n^n  def firstkdigits(n k): # take log10 of n^n. # log10(n^n) = n*log10(n) product = n * math.log(n 10); # We now try to separate the decimal  # and integral part of the /product. # The floor function returns the smallest  # integer less than or equal to the argument.  # So in this case product - floor(product)  # will give us the decimal part of product decimal_part = product - math.floor(product); # we now exponentiate this back # by raising 10 to the power of # decimal part decimal_part = pow(10 decimal_part); # We now try to find the power of 10 by  # which we will have to multiply the  # decimal part to obtain our final answer digits = pow(10 k - 1); return math.floor(decimal_part * digits); # Driver Code  n = 1450; k = 6; print(firstkdigits(n k)); # This code is contributed by mits 
C#
// C# program to find the first k digits of n^n using System; class GFG {    /* function that manually calculates   n^n and then removes digits until   k digits remain */  public static long firstkdigits(int n int k)  {    // take log10 of n^n.   // log10(n^n) = n*log10(n)  double product = n * Math.Log10(n);    /* We will now try to separate the decimal   and integral part of the /product. The   floor function returns the smallest integer  less than or equal to the argument. So in  this case product - floor(product) will  give us the decimal part of product */  double decimal_part = product -  Math.Floor(product);    // we will now exponentiate this back by   // raising 10 to the power of decimal part  decimal_part = Math.Pow(10 decimal_part);    /* We now try to find the power of 10 by   which we will have to multiply the decimal   part to obtain our final answer*/  double digits = Math.Pow(10 k - 1);    return ((long)(decimal_part * digits));  }  // driver function  public static void Main ()  {  int n = 1450;  int k = 6;  Console.Write(firstkdigits(nk));  } } // This code is contributed by nitin mittal 
PHP
 // PHP program to generate  // k digits of n ^ n // function to calculate  // first k digits of n^n function firstkdigits($n $k) { // take log10 of n^n.  // log10(n^n) = n*log10(n) $product = $n * log10($n); // We now try to separate the  // decimal and integral part  // of the /product. The floor  // function returns the smallest  // integer less than or equal to  // the argument. So in this case // product - floor(product) will  // give us the decimal part of product $decimal_part = $product - floor($product); // we now exponentiate this back  // by raising 10 to the power of // decimal part $decimal_part = pow(10 $decimal_part); // We now try to find the power  // of 10 by which we will have  // to multiply the decimal part  // to obtain our final answer $digits = pow(10 $k - 1); $i = 0; return floor($decimal_part * $digits); } // Driver Code $n = 1450; $k = 6; echo firstkdigits($n $k); // This code is contributed by m_kit ?> 
JavaScript
<script> // Javascript program to find the first k digits of n^n    /* function that manually calculates   n^n and then removes digits until   k digits remain */  function firstkdigits(nk)  {  //take log10 of n^n.   // log10(n^n) = n*log10(n)  let product = n * Math.log10(n);    /* We will now try to separate the decimal   and integral part of the /product. The   floor function returns the smallest integer  less than or equal to the argument. So in  this case product - floor(product) will  give us the decimal part of product */  let decimal_part = product - Math.floor(product);    // we will now exponentiate this back by   // raising 10 to the power of decimal part  decimal_part = Math.pow(10 decimal_part);    /* We now try to find the power of 10 by   which we will have to multiply the decimal   part to obtain our final answer*/  let digits = Math.pow(10 k - 1) i = 0;    return (Math.floor(decimal_part * digits));  }    // Driver code  let n = 1450;  let k = 6;  document.write(firstkdigits(n k));    // This code is contributed by rag2127 </script> 

الإخراج :  
 

962948


يعمل هذا الرمز في وقت ثابت ويمكنه التعامل مع قيم الإدخال الكبيرة لـ n
 

إنشاء اختبار