C++에는 수학적 문제를 해결하기 위한 방대한 함수 목록이 있습니다. 수학 함수 중 하나는 코드를 사용하여 N번째 홀수 자리를 찾는 것입니다. 이 기사에서는 홀수 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를 초기화하고 답변을 저장하기 위해 as를 초기화합니다. 또한 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 또는 기타 프로그래밍 언어와 같은 다른 언어로 이 프로그램을 수행할 수 있습니다. 이 문서가 문제 해결 방법에 대한 완전한 지식을 제공하므로 도움이 되었기를 바랍니다.