2016-06-03 12 views
8

हमारे पास एक बढ़ता अनुक्रम है जिसमें प्रत्येक तत्व में केवल अंक (0, 2, 4, 6, 8) होते हैं। हम find the nth number in this sequence0,2,4,6,8 द्वारा गठित बढ़ते अनुक्रम में nth संख्या खोजें?

क्या यह ओ (1) समय में इस अनुक्रम में nth संख्या खोजना संभव है।

अनुक्रम: 0, 2, 4, 6, 8, 20, 22, 24, 26, 28, 40, 42, 44, 46, 48, 60, 62, 64, 66, 68, 80, 82, 84, 86, 88, 200, 202 and so on.

+0

जहां n प्रपत्र शून्य या एक शुरू होता है? –

+2

मैं इस सवाल को ऑफ-विषय के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि यह होमवर्क असाइनमेंट का डंप है जो ओपी से शून्य प्रयास दिखाता है। –

+3

इस सटीक * प्रकार * समस्या को देखते समय वेब पर आपका पहला स्टॉप [इंटेगर अनुक्रमों (ओईआईएस) के ऑनलाइन विश्वकोश] (https://oeis.org) है, जिसमें यह अनुक्रम 0 के लिए कहने के लिए है , 2, 4, 6, 8, 20, 22, 24, 26, 28, 40, 42] (https://oeis.org/search?q=0%2C+2%2C+4%2C+6% 2C + 8% 2C + 20% 2C + 22% 2C + 24% 2C + 26% 2C + 28% 2C + 40% 2C + 42 और भाषा = अंग्रेज़ी और जाना = खोज)। –

उत्तर

11

इस क्रम में वें नंबर, आधार 5 में n है अंकों के साथ दोगुना हो गया।

def base5(n): 
    if n == 0: return 
    for x in base5(n // 5): yield x 
    yield n % 5 

def seq(n): 
    return int(''.join(str(2 * x) for x in base5(n)) or '0') 

for i in xrange(100): 
    print i, seq(i) 

यह ओ (लॉग एन) समय में चलता है। मुझे नहीं लगता कि ओ (1) समय में ऐसा करना संभव है।

यह n के 5 अंक आधार की पीढ़ी के साथ अंकों के दोहरीकरण के संयोजन से थोड़ा सरल किया जा सकता:

def seq(n): 
    return 10 * seq(n // 5) + (n % 5) * 2 if n else 0 
+0

धन्यवाद पॉल, ओ (लॉगन) भी अच्छा है :) – Godfather

+0

@ पॉल हंकीन: महोदय, क्या आप कृपया इस अनुक्रम को हल करने के लिए मेरी मदद कर सकते हैं? –

+0

@ राम यह आपके लिए बहुत मदद नहीं करता है, लेकिन मैंने सीधे आधार 5 के साथ संबंधों को देखा, और वहां से, कोड लिखना अपेक्षाकृत सरल है। उपर्युक्त टिप्पणियों में लास ने ओईआईएस में अनुक्रम की जांच करने का सुझाव दिया - यदि आप इसे नहीं देखते हैं तो पैटर्न खोजने का एक अच्छा तरीका होगा। –

-2
int Code() 
{ 
    k=0; 
    for(i=0;i<=10000;i++) 
    { 
     count=0; 
     n=i; 
     while(n!=0) 
     { 
      c=n%10; 
      n=n/10; 
      if(c%2!=0) 
      { 
       count=1; 
      } 
     } 
     if(count==0) 
     { a[k]=i; 
     k++;} 
    } 
} 
संबंधित मुद्दे