Leetcode 400.Nth Digit
題目的意思是給定一串無窮大的正整數,讓我們找出第n個數字是多少。
思路:我們可以把這些數字寫出來找下規律,每個數由一個數字構成的數有9個,每個數由2個數字構成的數有90個,每個數由3個數字構成的數有900個,每個數由n個數字構成的數有9*10^(n-1)個。我們首先要找出第n個數字落在幾位數上,然後找到具體落在哪個數上,然後找到落到這個數的第幾位上,最後鎖定是哪一個數字。每一步都需要細心耐心。
class Solution {
public:
int findNthDigit(int m) {
int digit=1,flag;
long c=1, target=0, n=m;
//求出數字n落在digit位數上
while(n>0)
{
n-=c*digit*9;
digit++;
c*=10;
}
//求出數字n是digit位數的第幾個數字
n+=(--digit)*(c/10)*9;
//求出數字n是落在哪一個數上
target=(n-1)/digit+c/10; //
//求出數字n是落在target左數第flag個數字上
flag=(n-1)%digit+1;
//求出target的右數第digit-flag+1數字
return target/(int)pow(10,digit-flag)%10;
}
};
相關文章
- Last digit of a huge numberASTGit
- D - Digit vs Square RootGit
- [CERC2015] Digit Division 題解Git
- Nth Digit 第N個數字Git
- P9640 [SNCPC2019] Digit ModeGit
- HDU 1060 Leftmost Digit(數論,c++)GitC++
- [ARC158C] All Pair Digit Sums 題解AIGit
- 信奧一本通1164:digit函式Git函式
- HDU - 1061 Rightmost Digit(二分快速冪板題)Git
- 生成元(Digit Generator, AMC/ICPC Seoul 2005, UVa1583)Git
- C++信奧老師解一本通題 1164:digit函式C++Git函式
- region format is illegal, only digit, letter and - is allowed!(.env檔案中行內註釋導致!!)ORMGit
- Martyr2專案實現——Number部分的問題求解 (1) Find Pi to Nth DigitGit
- 【LeetCode】如何學習LeetCode?LeetCode
- leetcodeLeetCode
- leetcode 238LeetCode
- LeetCode in actionLeetCode
- LeetCode 164 最大間距 HERODING的LeetCode之路LeetCode
- LeetCode 143 重排連結串列 HERODING的LeetCode之路LeetCode
- LeetCode | 20 ValidParenthesesLeetCode
- LeetCode | 370 RangeAdditionLeetCode
- leetcode-7LeetCode
- LeetCode | 704 BinarySearchLeetCode
- leetcode-4LeetCode
- The best LeetCode NodesLeetCode
- LeetCode兩則LeetCode
- LeetCode三則LeetCode
- LeetCode2:LeetCode
- Leetcode-1221LeetCode
- Leetcode-13LeetCode
- Leetcode-509LeetCode
- Leetcode-917LeetCode
- Leetcode-394LeetCode
- Leetcode學習LeetCode
- leetcode no.1LeetCode
- leetcode開篇LeetCode
- Leetcode(easy heap)LeetCode
- LeetCode30LeetCode
- 我的 LeetCodeLeetCode