從1開始的數字,將數字都放到乙個序列中,如1,2,3,4,5,6,7,8,9,10,11,12……成為序列"123456789101112..."。
現要查詢其中的第n位。
從1增加到9會增加9次、每次1位、增加1輪
從10增加到99會增加9次、每次2位、增加10輪
從100增加到999會增加9次、每次3位、增加100輪
以此類推……計算出各個不同位數的數所在的區間。
參考了查詢無限整數序列的第n位1,2,3,4,5,6,7,8,9,10,11,...這篇部落格
#include int nthdigit(int n)
/** 2.num表示是哪個數字*/
int index = n%digits; //是否正好是乙個數字結束
if(index == 0)
int num = base+(index == digits ? n/digits-1:n/digits);
/** 3.計算第幾位*/
//index表示該數字的第幾個數
while(indexreturn num%10;
}int main()
009快手 數字序列第n位的值
問題描述 有乙個無限長的數字序列1,2,2,3,3,3,4,4,4,4,5,5,5,5,5。數字序列從1開始遞增,且數字k在該序列中正好出現k次 求第n項是多少 輸入描述 輸入為乙個整數n 輸出描述 輸出乙個整數,即第n項的值 示例輸入 4示例輸出 3思路 一開始是打算用加法模擬一下,後來發現超記憶...
C語言 N位絕對素數輸出
c語言 n位絕對素數輸出 首先,我們要了解什麼是絕對素數。素數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。絕對素數是指本身是素數,其逆序數也是素數的數。例如 10321與12301是絕對素數。了解了這個概念之後,我們一步步來寫 我們寫乙個簡單的c語言素數程式,以100以內打個例...
C語言求n的階乘(n!)
c語言求n的階乘 n!joprant7 從鍵盤輸入乙個數,求出這個數的階乘,即 n 演算法思想 首先要清楚階乘定義,所謂 n 的階乘,就是從 1 開始乘以比前乙個數大 1 的數,一直乘到 n,用公式表示就是 1 2 3 4 n 2 n 1 n n 具體的操作 利用迴圈解決問題,設迴圈變數為 i,初值...