C には、数学の問題を解決するための関数の膨大なリストがあります。数学関数の 1 つは、コードを使用して N 番目の奇数桁を見つけることです。この記事では、奇数の桁を見つける完全な方法を説明し、奇数とは何か、奇数の桁で構成されている数を理解します。
奇数は 2 で割ったときに余りがあるため、最初のいくつかの奇数は 1、3、5、7、9、11 になります。 13、15、17、19...
必要な数を見つけるには、2 つの方法があります:
方法 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 を使用してユーザーから入力を取得し、最初の可能な数値で配列を初期化します。
第 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 番目の数値が配列に格納されている最初の可能な数値で利用可能かどうかを確認し、配列内に存在する数値をキューにプッシュします。
ステップ 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 番目の奇数を求める方法という問題があり、それを解決する 2 つの方法を見つけました。最初の方法は、各数値をチェックして偶数をスキップするだけの簡単な方法ですが、計算に時間がかかります。
2 番目の方法は、キューを使用して奇数を格納し、上記の式を使用して次の可能な数値を見つけることです。このメソッドの複雑さは O(n) です。
奇数桁のみで構成される N 番目の数値を見つけるプログラムを C で作成しました。このプログラムは、C、Python、Java、またはその他のプログラミング言語など、他の言語で作成できます。この記事が問題の解決に役立つことを願っています。
以上がC++ を使用して、奇数桁で構成される N 番目の数値を見つけるプログラムを作成します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。