寻找斐波那契位置上有 O 的名字的 C++ 代码


假设我们有一个数字 n。阿玛尔想给他宠物起个名字。他会遵循一个算法。该名字将有 n 个字符。该名称将包含大写和小写字母“O”和“o”。该算法表明,如果 i 是斐波那契数列的一个数,则名称的第 i 个字母应该是“O”(大写),否则为“o”(小写)。名称中的字母从 1 到 n 编号。

因此,如果输入像 n = 10 一样,则输出将为“OOOoOooOoo”,因为前几个斐波那契数是 1、2、3、5 等。

步骤

为解决此问题,我们将遵循以下步骤:

s := a string of size n and filled with 'o's
for initializing i and j from 1, when i <= n, increase i by j and set
j := i-j after each iteration, do
   s[i-1] := 'O'
return s.

举例

让我们看看以下实现以更好地理解:

#include <bits/stdc++.h>
using namespace std;
string solve(int n){
   string s(n, 'o');
   for (int i = 1, j = 1; i <= n; i += j, j = i - j)
      s[i - 1] = 'O';
   return s;
}
int main(){
   int n = 10;
   cout << solve(n) << endl;
}

输入

10

输出

OOOoOooOoo

更新时间:2022-03-15

83 次浏览

开始您的职业生涯

通过完成课程获得认证

开始
广告