C 有一個巨大的函數列表來解決數學問題。其中一個數學函數是使用程式碼找出第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中文網其他相關文章!