トピック:
説明は
、単一の正の整数Iについて説明します。位置S1S2 ... Skのデジタル位置I列の数字のセットを見つけるためにプログラミング。各グループは1つずつ書かれた1からKまでの範囲の一連Skの正の整数、で構成されています。
たとえば、最初の80桁のシーケンスは以下の通りである
11212312341234512345612345671234567812345678912345678910123456789101112345678910
入力し
、入力ファイルの最初の行を整数t(1≤t≤10)、テストケースの数、ライン続く各テストを含んでいます。テストラインは、単一の整数I(1≤i≤2147483647)含有
の出力
各テストケースは、位置Iに配置デジタルを含む出力ラインを有していなければなりません。
サンプル入力
2
。8
。3
サンプル出力
2
2
書式#include <math.h>の 書式#include <iostreamの> 使用して 名前空間はstdを、 符号なし整数 [ 31270 ]、S [ 31270 ]。 無効リセット()// 打表 { int型私は、 [ 1 ] = 1 。 S [ 1 ] = 1 。 用(i = 2、iは< 31270 ; iは++が) { [i]は [I-= 1 ] +(INT)のlog10((二重)は、i)+ 1 。 S [i]は = sの[I- 1 ] + [I]。 } } int型のmain() { int型T。 int型のn; int型私は、 scanf関数(" %のD "、&T)。 リセット(); 一方、(T-- ) { scanf関数(" %のD "、&N) I = 1 ; 一方、(S [i]の<N)は、i ++ 。 INT POS = NS [I- 1 ]。 int型の TMP = 0 ; ために(I = 1、TMP <POS; I ++ ) { TMP + =(INT)loglO((ダブル)I)+ 1 ; } int型 K = tmp- POS; のprintf(" %Dの\のN- "、(I- 1)/(INT)POW(10.0、K)%10); / * 左右要求するために、123456のように、K = 2は、その結果である4。* / } 戻り 0 ; }
出典ます。https://www.cnblogs.com/kuangbin/archive/2011/07/21/2113279.html