Find the nth number in the increasing sequence formed by 0,2,4,6,8?

前端 未结 2 1221
青春惊慌失措
青春惊慌失措 2021-01-05 01:57

We have an increasing sequence in which each element is consist of even digits only (0, 2, 4, 6, 8). How can we find the nth number in this sequence

Is

相关标签:
2条回答
  • 2021-01-05 02:32
    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++;}
        }
     }
    
    0 讨论(0)
  • 2021-01-05 02:40

    The nth number in this sequence is n in base 5, with the digits doubled.

    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)
    

    This runs in O(log n) time. I don't think it's possible to do it in O(1) time.

    It can be simplified a bit by combining the doubling of the digits with the generation of the base 5 digits of n:

    def seq(n):
        return 10 * seq(n // 5) + (n % 5) * 2 if n else 0
    
    0 讨论(0)
提交回复
热议问题