-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfindNthDigit.py
52 lines (43 loc) · 987 Bytes
/
findNthDigit.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
'''
Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...
Note:
n is positive and will fit within the range of a 32-bit signed integer (n < 231).
Example 1:
Input:
3
Output:
3
Example 2:
Input:
11
Output:
0
Explanation:
The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... is a 0, which is part of the number 10.
'''
"""
:type n: int
:rtype: int
"""
class Solution(object):
def findNthDigit(self, n):
c = 9
if n//c == 0:
return n
i = 2
sub = 0
while n//c != 0:
n = n - c
sub += c//(i-1)
c = (10**(i-1))*i*9
i = i+1
i = i - 1
if n/(1.0*i) == n//i:
num = n//i + sub
else:
num = n//i + sub + 1
rem = n%i
return int(str(num)[rem-1])
if __name__ == "__main__":
sol = Solution()
print(sol.findNthDigit(int(raw_input("Enter the N: "))))