अंकों एबीसीडीईएफ के साथ संख्या को देखते हुए आप [0,F], [0,E9], [0,D99], [0,C999], [0,B9999]
और [0,A99999]
में '2 की संख्या को गिन सकते हैं और उन्हें जोड़ सकते हैं।
फिर [0, X9999...999]
श्रेणी के लिए, शीर्ष संख्या T = X9999...999
(X+1) * 10<sup>nines</sup> -1
के रूप में लिखा जा सकता है।
की संख्या 'उस श्रेणी में 2 की है:
((X >= 2 ? 1/(X + 1)) : 0) + nines/10) * (T + 1);
यही कारण है: अगर X >= 2
, है कि संख्या के अंश एक' देखते हैं 2 'स्थिति नौ + 1 1/(X+1)
है, कुल में से (T+1)/(X+1)
'2 उस स्थिति में है। यदि X < 2
है, तो उस स्थिति पर [0..T] पर कोई संख्या '2' नहीं है।
अन्य अंकों पदों के लिए, संख्या के 1/10
एक '2' देखने के लिए कि हर अंकों की स्थिति में आसान है, इसलिए (T+1)/10
'स्थिति 0 पर 2 के, (T+1)/10
' स्थिति 1, आदि में से 2 के देखते हैं कुल, (T+1) * nines/10
।
इस समाधान की जटिलता ओ (लॉगएन) है।
ओ (एन²)? यदि आपका मतलब है, संख्याएं उत्पन्न करें और अंकों की जांच करें, यह ओ (एन एलजी एन) है, क्योंकि प्रत्येक संख्या n को O (lg n) अंकों द्वारा दर्शाया जाता है। –
यह एक अनुमोदन प्रश्न है .. –