fork download
  1. # include <iostream>
  2. using namespace std;
  3. void matpow(long double *m[],long double p)
  4. {
  5. if(p>1)
  6. {matpow(m,p/2);
  7. int i,j,k;
  8. long double *g[2];
  9. g[0]=new long double[2];
  10. g[1]=new long double[2];
  11. g[0][0]=g[0][1]=g[1][0]=g[1][1]=0;
  12. for(i=0;i<2;++i)
  13. for(j=0;j<2;++j)
  14. for(k=0;k<2;++k)
  15. g[i][j]+=(m[i][k]*m[k][j]);
  16. if(p%2==1)
  17. {m[0][0]=g[0][1];
  18. m[0][1]=g[0][0]+g[0][1];
  19. m[1][0]=g[1][1];
  20. m[1][1]=g[1][0]+g[1][1];
  21. }
  22. else
  23. {m[0][0]=g[0][0];
  24. m[0][1]=g[0][1];
  25. m[1][0]=g[1][0];
  26. m[1][1]=g[1][1];
  27.  
  28. }
  29. }
  30. }
  31. int main()
  32. {
  33. long double *m[2],t,i,a,b,n,sum;
  34. cin>>t;
  35. for(i=0;i<t;++i)
  36. {
  37. cin >>n;
  38. if(n==1)
  39. cout <<"0\n";
  40. else
  41. if(n==2)
  42. cout <<"1\n";
  43. else
  44. {
  45. m[0]=new long double[2];m[1]=new long double[2]; m[0][0]=0;m[0][1]=m[1][1]=1;m[1][0]=2;
  46. matpow(m,n-2);
  47. printf("%.0Lf\n",m[1][1]);}}}
  48.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
6
1
2
3
4
5
999
compilation info
prog.cpp: In function ‘void matpow(long double**, long double)’:
prog.cpp:16: error: invalid operands of types ‘long double’ and ‘int’ to binary ‘operator%’
prog.cpp: In function ‘int main()’:
prog.cpp:33: warning: unused variable ‘a’
prog.cpp:33: warning: unused variable ‘b’
prog.cpp:33: warning: unused variable ‘sum’
stdout
Standard output is empty