在 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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP