สมมติว่าเรามีตัวเลข n อมลอยากตั้งชื่อสัตว์เลี้ยง ตามอัลกอริทึม ชื่อยาว n ตัวอักษร ประกอบด้วย 'O' และ 'o' ตัวพิมพ์ใหญ่และเล็ก ตัวอักษรที่ i ควรเป็น 'O' ถ้า i เป็นสมาชิกของลำดับฟีบอนัชชี มิฉะนั้น 'o' ตัวอักษรหมายเลข 1 ถึง n
เช่น ถ้าอินพุตคือ n = 10 เอาต์พุตจะเป็น "OOOoOooOoo" เพราะเลขฟีบอนัชชีแรกคือ 1, 2, 3, 5...
ขั้นตอนการแก้ปัญหา
s := สตริงขนาด n เติม 'o'
for i, j เริ่มที่ 1; i <= n; i += j, j = i - j:
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