fork download
  1. #include <iostream>
  2. using namespace std;
  3. /*Ham tinh tich cua 2 matran 3x3*/
  4. void TichMatran(int mt1[4][4], int mt2[4][4], int mt[4][4]) // bo di gia tri [0][0]
  5. {
  6. for (int i=1; i<=3; i++)
  7. for (int j=1; j<=3; j++)
  8. {
  9. mt[i][j] = 0;
  10. for (int k=1; k<=3; k++)
  11. mt[i][j] = mt[i][j] + mt1[i][k]*mt2[k][j];
  12. }
  13. return;
  14. }
  15. /*Copy 2 matran mt2 = mt1*/
  16. void Copymatran(int mt1[4][4], int mt2[4][4])
  17. {
  18. for (int i=1; i<=3; i++)
  19. for (int j=1; j<=3; j++)
  20. mt2[i][j] = mt1[i][j];
  21. return;
  22. }
  23. /*Ham tinh mt^n*/
  24. void LuythuaMatran(int mt[4][4], int mtpow[4][4], int n)
  25. {
  26. int mttemp[4][4];
  27. Copymatran(mt,mttemp);
  28. Copymatran(mt,mttemp); // mttemp = mt
  29. for (int i=1; i<n; i++)
  30. {
  31. TichMatran(mt,mttemp,mtpow);
  32. Copymatran(mtpow,mttemp);
  33. Copymatran(mtpow,mttemp); // sau moi vong gap gan lai mttemp = mtpow
  34. }
  35. return;
  36. return; // Luy thua cuoi cung = mtpow
  37. }
  38.  
  39. /*So Tribonacci thu n*/
  40. int Tribonacci(int n)
  41. {
  42. if (n ==1 )
  43. return 1;
  44. if (n ==2 )
  45. return 2;
  46. if (n ==3)
  47. return 3;
  48. int mt[4][4];
  49. // Tao ra ma tran mu n
  50. mt[1][1] = 1;
  51. mt[1][2] = 1;
  52. mt[1][3] = 1;
  53. mt[2][1] = 1;
  54. mt[2][2] = 0;
  55. mt[2][3] = 0;
  56. mt[3][1] = 0;
  57. mt[2][2] = 0; // 1 1 1 Fn+2 F3
  58. mt[2][3] = 0; // 1 0 0 = mt => Fn+1 = mt * F2 (1)
  59. mt[3][1] = 0; // 0 1 0 Fn F1
  60. mt[3][2] = 1;
  61. mt[3][3] = 0;
  62.  
  63. int mtpow[4][4];
  64. LuythuaMatran(mt,mtpow,n-1);
  65. int Tn = mtpow[3][1]*3+mtpow[3][2]*2+mtpow[3][3]*1;
  66. int Tn = mtpow[3][1]*3+mtpow[3][2]*2+mtpow[3][3]*1; // Tu (1) => Tn = ...
  67. return Tn;
  68. }
  69. /*Tinh Fn*/
  70. int Fn(int n) // Tong cua n so Tribonacci dau tien
  71. {
  72. if (n ==1)
  73. return 1;
  74. if (n ==2)
  75. return 1+2;
  76. if (n==3)
  77. return 1+2+3;
  78. int SUM = (3*Tribonacci(n)+2*Tribonacci(n-1)+Tribonacci(n-2)+1-3)/2;
  79. return SUM;
  80. }
  81. int main()
  82. {
  83. int input; // so test
  84. cin >> input;
  85. int arr[input];
  86. for (int i=0; i<input; i++)
  87. {
  88. cin >> arr[i];
  89. }
  90. for (int i=0; i<input; i++)
  91. cout << Fn(arr[i]) << endl;
  92. //cout << Tribonacci(input);
  93. return 0;
  94. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int Tribonacci(int)’:
prog.cpp:66:9: error: redeclaration of ‘int Tn’
     int Tn = mtpow[3][1]*3+mtpow[3][2]*2+mtpow[3][3]*1; // Tu (1) => Tn = ...
         ^~
prog.cpp:65:9: note: ‘int Tn’ previously declared here
     int Tn = mtpow[3][1]*3+mtpow[3][2]*2+mtpow[3][3]*1;
         ^~
stdout
Standard output is empty