fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. // Hàm tính độ dài của xâu Fibonacci G(n)
  6. int getLength(int n) {
  7. if (n == 1 || n == 2) return 1;
  8. int a = 1, b = 1; // len(1) = 1, len(2) = 1
  9. for (int i = 3; i <= n; i++) {
  10. int temp = a + b; // len(n) = len(n-2) + len(n-1)
  11. a = b;
  12. b = temp;
  13. }
  14. return b;
  15. }
  16.  
  17. // Hàm tìm ký tự ở vị trí i trong G(n)
  18. char findCharacter(int n, int i) {
  19. if (n == 1) return 'A';
  20. if (n == 2) return 'B';
  21.  
  22. // Tính độ dài của G(n-2) và G(n-1)
  23. int len_n_minus_2 = getLength(n - 2);
  24. if (i <= len_n_minus_2) {
  25. // Nếu i nằm trong G(n-2), tiếp tục tìm trong G(n-2)
  26. return findCharacter(n - 2, i);
  27. } else {
  28. // Nếu i nằm trong G(n-1), điều chỉnh i và tìm trong G(n-1)
  29. return findCharacter(n - 1, i - len_n_minus_2);
  30. }
  31. }
  32.  
  33. int main() {
  34. int t;
  35. cin >> t;
  36. while (t--) {
  37. int n, k;
  38. cin >> n >> k;
  39.  
  40. // Kiểm tra và in ra ký tự tại vị trí k trong G(n)
  41. cout << findCharacter(n, k) << endl;
  42. }
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0.01s 5280KB
stdin
2
6 4
8 19
stdout
A
B