Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตัวเลข N ใน C++


สมมติว่าเรามีลำดับจำนวนเต็มอนันต์หนึ่งลำดับ เราต้องหาหลักที่ n ของลำดับนี้ ดังนั้นหากอินพุตเป็น 11 เอาต์พุตจะเป็น 0 เหมือนกับว่าเราใส่ตัวเลขเช่น 123456789101112 ดังนั้นหลักที่ 11 จึงเป็น 0

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • len :=0 และ cnt :=9 และ start :=1

  • ในขณะที่ n> len * cnt

    • n :=n – (len * cnt)

    • cnt :=cnt * 10, start :=start * 10

    • เพิ่มเลนขึ้น 1

  • start :=start +(n - 1) / เลน

  • 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