寻找斐波那契位置上有 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
广告