トピック:
文字配列の配列にデジタル形式で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 }。