使用 C++ 查詢僅由奇數數字組成的第 N 個數
C++ 擁有大量的函式來解決數學問題。其中一個數學函式是使用程式碼查詢第 N 個奇數位數。本文將描述查詢第 N 個奇數的完整方法,並瞭解什麼是奇數以及哪些數是由奇數位陣列成的。
查詢僅由奇數數字組成的第 N 個數
奇數除以二餘一,所以前幾個奇數是 1, 3, 5, 7, 9, 11, 13, 15, 17, 19...
為了找到所需的數字,我們這裡有兩種方法:
方法一:檢查每個自然數是否為奇數,並對每個奇數進行計數,直到計數等於 n,如果找到偶數則不計數,即跳過偶數並計數奇數,給出找到的所需的第 N 個數。
這種查詢僅由奇數數字組成的第 N 個數的方法很簡單,我們只是檢查每個數字並計算奇數的個數,但在計算機程式設計方面,這種方法需要花費大量時間才能完成此任務。
方法二:每個由奇數數字組成的數字最後一位可以是 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 作為輸出)
上面的程式碼是 C++ 程式碼,用於查詢僅由奇數數字組成的第 N 個數。為了理解這段程式碼,讓我們分解這段程式碼並理解它的每一部分,從而理解完整的程式碼。
程式碼解釋
步驟 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 從使用者處獲取輸入,並使用第一個可能的數字初始化一個數組。
步驟 2:檢查第 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 或任何其他程式語言)中編寫此程式。希望您覺得這篇文章有所幫助,因為它提供瞭解決問題的完整方法知識。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP