在 C++ 中查找给定数字在由 4 和 7 组成的数字中的位置


在这个问题中,我们给定一个数字 N。我们的任务是找到给定数字在仅由 4 和 7 组成的数字中的位置。该序列仅由 4 和 7 组成,例如 4, 7, 44, 47, 74, 77, 444…

让我们来看一个例子来理解这个问题:

输入

N = 5

输出

74

解释

Series upto 5 terms is 4, 7, 44, 47, 74…

解决方案方法

这个问题的一个简单的解决方案是基于查找序列中的模式。

这里,每个偶数位置的结尾都是 7。

每个奇数位置的结尾都是 4。

因此,我们可以逐位查找序列,并根据当前数字查找位置。

如果当前数字是 4,则位置将更新为 position = (position*2) + 1。

如果当前数字是 7,则位置将更新为 position = (position*2) + 2。

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

示例

 在线演示

#include <iostream>
using namespace std;
int findNumPosition(string num){
   int i = 0, position = 0;
   while (num[i] != '\0') {
      position *= 2;
      if(num[i] == '4')
         position += 1;
      else
         position += 2;
      i++;
   }
   return position;
}
int main() {
   string num = "74774";
   cout<<"The position of the number in the series is "<<findNumPosition(num);
   return 0;
}

输出

The position of the number in the series is 53

更新于:2021年3月16日

342 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.