Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 N번째 자리


무한 정수 시퀀스가 ​​하나 있다고 가정하면 이 시퀀스의 n번째 자리를 찾아야 합니다. 따라서 입력이 11이면 123456789101112와 같은 숫자를 배치하는 것처럼 출력이 0이 되므로 11번째 자리는 0입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • len :=0 및 cnt :=9 및 시작 :=1

  • 동안 n> len * cnt

    • n :=n – (len * cnt)

    • cnt :=cnt * 10, 시작 :=시작 * 10

    • len 1 증가

  • 시작 :=시작 +(n - 1) / len

  • s :=문자열로 시작

  • 반환 s[(n – 1) 모드 렌]

예시(C++)

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
class Solution {
public:
   int findNthDigit(int n) {
      lli len = 1;
      lli cnt = 9;
      lli start = 1;
      while(n > len * cnt){
         n -= len * cnt;
         cnt *= 10;
         start *= 10;
         len++;
      }
      start += (n - 1) / len;
      string s = to_string(start);
      return s[(n - 1) % len] - '0';
   }
};
main(){
   Solution ob;
   cout << (ob.findNthDigit(11));
}

입력

11

출력

0