找到偶数位数的第N个数字

use*_*837 -4 algorithm

考虑一下我们{0,2,4,6,8}只有数字.现在我们必须找到一系列的N个数字.

Series : 0,2,4,6,8,20,22,24,26,28,40.....

int start=0;
while(found!=n){

      if(start is not odd)found++;
      start+=2;
}
Run Code Online (Sandbox Code Playgroud)

我们怎么能有效地做到这一点?

For Ex N=6  Ans=20
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 5

你试图从5位数组成一个数字,所以这基本上是一个基数为5的数字,只是用一组古怪的数字 - {0,2,4,6,8}而不是{0,1,2, 3,4}.请注意,所需数字集中的每个数字是基数为5的数字集的相应索引中的数字的两倍.因此,长话短说,您可以将N转换为基数5,然后将结果加倍.例如,在Java(或C/C++,有趣的是):

int createNumber(int n) {
    int result = 0;
    while (n > 0) {
        result *= 10;
        result += (n % 5);
        n /= 5;
    }
    return result * 2;
}
Run Code Online (Sandbox Code Playgroud)