Giả sử chúng ta có một số n. Amal muốn đặt tên cho thú cưng của mình. Anh ta sẽ làm theo thuật toán hậu môn. Tên sẽ dài n ký tự. Tên sẽ chứa các ký tự viết hoa và viết thường 'O's và' o. Thuật toán đề xuất chữ cái thứ i của tên phải là 'O' (chữ hoa) nếu tôi là thành viên của dãy Fibonacci và 'o' (chữ thường) nếu không. Các chữ cái trong tên được đánh số từ 1 đến n.
Vì vậy, nếu đầu vào là n =10, thì đầu ra sẽ là "OOOoOooOoo", bởi vì các số fibonaccin đầu tiên là 1, 2, 3, 5, v.v.
Các bước
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
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.
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#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; }
Đầu vào
10
Đầu ra
OOOoOooOoo