比較 m^n 和 n^m 的程式


問題陳述指出,我們需要編寫一個程式來比較 m^n 和 n^m。我們需要找出計算 $m^{n}$ 和 $n^{m}$ 的演算法,並進行比較,並根據 $m^{n}$ 是否大於 $n^{m}$,或者 $m^{n}$ 是否小於 $n^{m}$,或者兩者是否相等來列印結果。我們將得到兩個正數 m 和 n,我們需要找出 $m^{n}$ 和 $n^{m}$ 並比較這兩個值。

例如,

輸入:m=2,n=5

輸出:m^n 大於 n^m。

解釋:$m^{n}$ 即 25 = 32,而 $n^{m}$ 即 52 = 25。由於 32 大於 25,我們將列印 m^n 大於 n^m。

輸入:m=6,n=4

輸出:n^m 大於 m^n。

解釋:$m^{n}$ 為 64,等於 1296,而 $n^{m}$ 為 46,等於 4096。由於 4096 大於 1296,我們將列印 n^m 大於 m^n。

演算法

在看到問題後想到的基本方法或解決問題的樸素方法是計算 $m^{n}$ 和 $n^{m}$ 的值。計算這兩個值後,使用 if 語句進行比較並相應地列印結果。我們可以使用 C++ 中的 pow 函式計算 $m^{n}$ 和 $n^{m}$ 的值。

語法

int value= pow(m,n)

函式中傳遞的第一個值表示底數,傳遞的第二個值表示冪。但是這種方法只能用於 m 和 n 的較小值,因為對於 m 和 n 的較大值,計算 $m^{n}$ 和 $n^{m}$ 的值會導致 int 資料型別溢位。

因此,解決此問題的有效方法可以使用對數函式。讓我們用一個例子來解釋這種方法。為了比較 $m^{n}$ 和 $n^{m}$ 的值,我們可以在兩邊使用對數。它可以表示為 -

$$ \log_{e}{(m^{n})}\:and\:\log_{e}{(n^{m})} $$

根據對數函式的定律,這可以進一步寫成

$$ n\:\times\:\log_{e}{(m)}\:and\:m\:\times\:\log_{e}{(n)} $$

現在計算這些值,然後比較這兩個值將給我們所需的結果。在 C++ 中,有一個內建函式稱為 log,它返回傳遞給它的任何值的自然對數。任何值的自然對數是以 e 為底的該數的對數值。

語法

double ans= log(a)

它返回 a 的自然對數。

以下是使用此演算法解決問題的方法。

方法

我們將在這種方法中遵循的步驟如下 -

  • 初始化一個函式,我們將在其中計算和比較這兩個值。

  • 宣告兩個變數。

  • 將計算出的值儲存在宣告的變數中。

  • 比較這些值。如果 $m^{n}$ 大於 $n^{m}$,則列印 m^n 大於 n^m。否則,如果 $n^{m}$ 大於 $m^{n}$,則列印 n^m 大於 m^n,或者如果它們相等,則列印 m^n 等於 n^m。

示例

C++ 中的方法實現 -

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

//function to calculate and compare both the values
void compare(int m, int n){
   double m_n,n_m; //variables to store the calculated value
   m_n= n * (double)log(m); //type casting value of log into double to store decimal values since m is int data type
   n_m= m * (double)log(n);
   //comparing values using conditional statements and printing accordingly
   if(m_n>n_m){
      cout<<"m^n is greater than n^m"<<endl;
   }
   else if(m_n<n_m){
      cout<<"n^m is greater than m^n"<<endl;
   }
   else
      cout<<"m^n is equal to n^m"<<endl;
}
int main(){
   int m=543,n=248;
   compare(m,n);
   m=10,n=40;
   compare(m,n);
   return 0;
}

輸出

n^m is greater than m^n
m^n is greater than n^m

時間複雜度:O(1),花費常數時間。

空間複雜度:O(1),因為沒有佔用額外的空間。

結論

我們討論瞭解決比較 m^n 和 n^m 問題的方法。我們使用 C++ 中的 log 函式比較 m^n 和 n^m 的值,並相應地列印答案。

希望本文對您有所幫助,並解答了您關於問題以及解決問題方法的所有疑問。

更新於: 2023年3月16日

274 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告