順番に46桁の数字 - のオファーを受賞

トピック:

  文字配列の配列にデジタル形式で0123456789101112131415 ...。この配列では、(0から数えて)5ビット5であり、13ビットは4ビットが19である、など、1です。任意のビット数nに対応する機能要求を送ることができます。

ソリューション: 

実施例では15桁の2(左から二桁を取り付け2 12は、インデックス位置1において12 0で開始する)
ステップ1:まず、数値の桁数を決定属し、
もし数n <9;
二、N <9 + 90 * 2 = 189は、 二桁を記載しました。
ステップ2:属するデジタル数の決定しました。10 +(15--10)/ 2 = 12。
ステップ3:どちらが数値であるかを判断します。15--10--(12--10)* 2 = 1、インデックス位置1、すなわち、数2で"12"のように。

実施例1001桁まで7
ステップ1:まず、数値の桁数を決定属し、
それは数であり、nがあれば<9;
二、N <9 + 90 * 2 = 189;
なら3桁、N <189 + 900×3 = 2889;
説明は、3桁の数字です。
ステップ2:属するデジタル数の決定しました。100 +(1001--190)/ 3 = 370。
ステップ3:どちらが数値であるかを判断します。1001--190--(370--100)* 3 = 1、添え字1位置、即ち、数7は、 "370"のように。

 

1  クラスDigitsInSequence {
 2      INT digitAtIndex(int型のインデックス){
 3          であれば(インデックス< 0 4              復帰 - 1 5          もし(指数< 10 6              リターン指数;
7          INT curIndex = 10、長さ= 2 8          INT boundNum = 10 9          一方(curIndex + lengthSum(長さ)< インデックス){
 10              curIndex + = lengthSum(長さ)。
11              boundNum * = 10 12              長++ 13          }
 14          INT addNum =(インデックス- curIndex)/ 長さ。
15          INT curNum = boundNum + addNum。
16          リターン to_stringに(curNum)インデックス- curIndex - addNumの*の長さ] - ' 0 ' 17      }
 18      INT lengthSum(INT 長){
 19          int型のカウント= 9 20          のためにINT I = 1; 私は長さを<; 私は++ 21              のカウント* = 10 ;
22          リターンカウント*の長さ。
23      }
 24 }。

 

おすすめ

転載: www.cnblogs.com/zzw1024/p/11695306.html