首頁 >後端開發 >C++ >使用C++編寫一個程序,找出由奇數數字組成的第N個數字

使用C++編寫一個程序,找出由奇數數字組成的第N個數字

WBOY
WBOY轉載
2023-09-14 11:09:081498瀏覽

使用C++編寫一個程序,找出由奇數數字組成的第N個數字

C 有一個巨大的函數列表來解決數學問題。其中一個數學函數是使用程式碼找出第N個奇數位數。本文將描述找出奇數位數的完整方法,並理解奇數是什麼以及由奇數位數組成的數字是什麼。

找出由奇數位數組成的第N個數字

奇數在除以2時會有餘數,所以前幾個奇數是1、3、5、7、9、11 、13、15、17、19...

為了找出所需的數字,我們有兩種方法:

方法1 - 檢查每個自然數,判斷它是否為奇數,併計數每個奇數,直到計數等於n,如果找到的數字是偶數,則不計數,即跳過偶數併計數奇數,並給出找到的第N個數字。

這種找到由奇數位數組成的第N個數字的方法可能很簡單,因為我們只是檢查每個數字併計數奇數,但在計算機編程方面,這種方法需要花費很多時間來完成這個任務。

方法2 - 由奇數位數組成的每個數字的最後一位可以是1、3、5、7、9,因此它們是奇數。所以我們先檢查第N個數字是否是1、3、5、7、9,如果是,則得到答案;否則,我們移動到其他可能的數字,即11、13、15、17、19,然後是21、23、25、27、29。這形成了一個模式:1 * 10 {最後可能的數字}。

範例

Last possible numbers are 1,3,5,7,9
Next possible numbers can be found by
1 * 10 + 1 =11
1 * 10 + 3 = 13
1 * 10 + 5 = 15
1 * 10 + 7 = 17
1* 10 + 9 = 19
i.e 11,13,15,17,19

範例程式碼

#首先,讓我們看看程式碼是什麼樣的-

#include<bits/stdc++.h>
using namespace std;
int main(){
    queue<int> q;
    int cnt = 0, ans = 0;
    int n;
    cin >> n;
    int a[5]={1,3,5,7,9};
    for(int i = 0; i < 5;i++){
        cnt++;
        if(cnt == n)
            ans = a[i];
        q.push(a[i]);
    }
    if(ans)
        cout << ans << "\n";
    else{
        while(true){
            int x = q.front();
            q.pop();
            for(int j = 0; j < 5; j++) {
                int temp = x * 10 + a[j];
                q.push(temp);
                cnt++;
                if(cnt == n)
                    ans = temp;
            }
            if(ans)
                break;
        }
        cout << ans << "\n";
    }
    return 0;
}

輸出

9

(當我們提供5作為輸入時,我們得到9作為輸出)

上面的程式碼是用來找出僅由奇數數字組成的第N個數字的C 碼。為了理解這段程式碼,讓我們將其拆分並理解其中的每個部分,以理解完整的程式碼。

程式碼解釋

步驟1 - 從使用者取得n並初始化所需的變數。

int main() {
   queue<int> q;
   int cnt = 0, ans = 0;
   int n;
   cin >> n;
   int a[5]={1,3,5,7,9};

在這裡,我們建立了一個佇列,並初始化了變數cnt來計數和ans來儲存答案。同時,我們使用cin從使用者那裡獲取輸入,並用第一個可能的數字初始化了一個陣列。

第二步 - 檢查第N個數字是否在初始可能的數字中,並將這些數字儲存在佇列中。

for(int i = 0; i < 5;i++){
   cnt++;
   if(cnt == n)
      ans = a[i];
      q.push(a[i]);
   }
   if(ans)
      cout << ans << "\n";

在上面的程式碼中,我們檢查第N 個數字是否在第一個可能的數字中可用,儲存在數組中,並將數組中存在的數字推送到佇列中,如果在第在一個可能的數字中找到第N 個數字,則給出輸出

第3 步 - 在下一個可能的數字中尋找第N 個數字,如果找不到第N 個數字,則在佇列中更改數字。

while(true) {
   int x = q.front();
   q.pop();
   for(int j = 0; j < 5; j++) {
      int temp = x * 10 + a[j];
      q.push(temp);
      cnt++;
      if(cnt == n)
         ans = temp;
      }
      if(ans)
         break;
   }
   cout << ans << "\n";
}

最後,我們從佇列中彈出每個數字,並使用公式 { x * 10 最後一個奇數 } 產生下一個可能的數字,並檢查 cnt 的值是否等於 n。

結論

在本文中,我們有一個問題:如何找到由奇數位數字組成的第 N 個奇數,並找到了兩種方法來解決。第一種方法很簡單,只需檢查每個數字並跳過偶數,但計算時間較長。

第二種方法是使用佇列將奇數儲存在其中,並使用上述公式找到下一個可能的數字。此方法的複雜度為 O(n)。

我們使用C 編寫了一個程序,用於找到僅由奇數位數字組成的第N 個數字;我們可以使用任何其他語言(如C、Python、Java 或其他程式語言)編寫此程序。希望您發現本文對解決問題的方法有幫助。

以上是使用C++編寫一個程序,找出由奇數數字組成的第N個數字的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除