在 C++ 中查找仅允许使用 2 个数字(和 7)的序列中的第 n 个元素


在这个问题中,我们给定一个整数 N,表示一个仅由 4 和 7 组成的数字序列。

该序列为 4、7、44、47、74、77、…

任务是查找仅允许使用 2 个数字(和 7)的序列中的第 n 个元素。

让我们举一个例子来理解这个问题,

输入

N = 4,

输出

47

解释

The series is: 4, 7, 44, 47, ….

解决方案方法

解决此问题的一个简单方法是创建直到第 N 个数字的序列。如果当前数字的最后一位是 7,则很简单。那么前一个和后一个数字的最后一位是 4。

因此,我们将从第 1 个和第 2 个数字开始,然后继续到下一个元素。

为此,我们将创建一个数组 series[n+1]。

For index series[1] put 4
For index series[2] put 7

然后对于直到 N 的后续值,找到给定索引 i 的值,

If i is odd, series[i] = series[i/2]*10 + 4
If i is even, series[i] = series[i/2]*10 + 7

经过 n 次迭代后,返回 series[n] 处的值。

程序说明了我们解决方案的工作原理,

示例

 实时演示

#include <iostream>
using namespace std;
int findNthSeriesElement(int N) {
   int series[N+1];
   series[1] = 4;
   series[2] = 7;
   for (int i=3; i<=N; i++) {
      if (i%2 != 0)
         series[i] = series[i/2]*10 + 4;
      else
         series[i] = series[(i/2)-1]*10 + 7;
   }
   return series[N];
}
int main() {
   int N = 9;
   cout<<"The "<<N<<"th element of the array is "<<findNthSeriesElement(N);
   return 0;
}

输出

The 9th element of the array is 474

更新于: 2021年3月12日

182 次查看

开启你的职业生涯

通过完成课程获得认证

开始
广告