## Given a string in which all decimals are concatenated , write a function to find the Nth character in the string.

### Example

**INPUT**

s = “123456789101112131415…..”

**OUTPUT**

For N = 7, OUTPUT : 7

For N= 10, OUTPUT : 1

For N = 51, OUTPUT : 0

In this method the main idea is, considering the fact that in decimal 9 numbers are of length 1, 90 numbers are of length 2 and 900 numbers are of lengthh 3 and so on. So skip these numbers according to the given N and find the charcater

## Algorithm

**1.** Find the length of the number at N

**2.** Now, get the character at N

Implementation of above algorithm

### Example,

**INPUT :** N = 51

**1)** Finding the length of the number at N

51 – 9 = 42 // There are 9 numbers with length 1

42 – 90*2 < 0 // As there are 90 numbers with length 2, we got to know that the length is 2

**2)** Find the character at N

42 characters are after max 1 digit number(ie, 9)

ceil(42/2) = 21,so 9+21 = 30

30 is the number at N

Now, finding the actual character at N

42%2 = 0, so take 2nd digit of 30

Therefore, 0 is the character at N

## C++ Program

#include <bits/stdc++.h> using namespace std; // To find the digit at N char findDigit(int N, int d) { string s; stringstream ss; ss << N; ss >> s; return s[d - 1]; } // Method to return Nth character in concatenated // decimal string char getNthChar(int N) { // no_of_chars will store character escaped till now int no_of_chars = 0, nine = 9; // no_of_nums will store numbers escaped till now int no_of_nums = 0, len; // loop for number lengths for (len = 1; ; len++) { // increament with nine*len chars no_of_chars += nine*len; //increment with nine numbers no_of_nums += nine; if (no_of_chars >= N) { // restore variables to previous correct state no_of_chars -= nine*len; no_of_nums -= nine; N -= no_of_chars; break; } nine *= 10; } // differnce fomr las max digit int diff = ceil((double)N / len); // d will store dth digit of current number int d = N % len; cout<<d<<endl; if (d == 0) d = len; cout<<d; // method will return the digit at N return getDigit(no_of_nums + diff, d); } int main() { int N = 51; cout << getNthChar(N) << endl; return 0; }

Try It