C ++中的第N位

假设我们有一个无限整数序列,我们必须找到该序列的第n个数字。因此,如果输入为11,则输出将为0,就像我们将数字放置为123456789101112一样,因此第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)mod len]

范例(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

以上是 C ++中的第N位 的全部内容, 来源链接: utcz.com/z/322296.html

回到顶部