Advertisement
a53

Fibointerval

a53
Apr 9th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. typedef int Huge[220];
  4.  
  5. void AtribValue(Huge H,int X)
  6. {
  7. H[0]=0;
  8. while(X)
  9. ++H[0],H[H[0]]=X%10,X/=10;
  10. }
  11.  
  12. void Copy(Huge A,Huge B) /// A <- B
  13. {
  14. for(int i=0;i<=B[0];++i)
  15. A[i]=B[i];
  16. }
  17.  
  18. void Add(Huge A,Huge B) /// A <- A+B
  19. {
  20. int i,T=0;
  21. if(B[0]>A[0])
  22. {
  23. for(i=A[0]+1;i<=B[0];)
  24. A[i++]=0;
  25. A[0]=B[0];
  26. }
  27. else
  28. for(i=B[0]+1;i<=A[0];)
  29. B[i++]=0;
  30. for(i=1;i<=A[0];++i)
  31. A[i]+=B[i]+T,T=A[i]/10,A[i]%=10;
  32. if(T)
  33. A[++A[0]]=T;
  34. }
  35.  
  36. void Subtract(Huge A,Huge B) /// A <- A-B
  37. {
  38. int i,T=0;
  39. for(i=B[0]+1;i<=A[0];)
  40. B[i++]=0;
  41. for(i=1;i<=A[0];i++)
  42. A[i]+=(T=(A[i]-=B[i]+T)<0)?10:0;
  43. while(!A[A[0]])
  44. A[0]--;
  45. }
  46.  
  47. int main()
  48. {
  49. int n,q;
  50. ifstream f("fibointerval.in");
  51. f>>n>>q;
  52. Huge F[n+3];
  53. AtribValue(F[0],0);
  54. AtribValue(F[1],1);
  55. AtribValue(F[2],1);
  56. for(int i=3;i<=n+2;++i)
  57. Copy(F[i],F[i-2]),Add(F[i],F[i-1]);
  58. int a,b;
  59. Huge SUM;
  60. ofstream g("fibointerval.out");
  61. while(q--)
  62. {
  63. f>>a>>b;
  64. for(int i=F[a][0];i>0;--i)
  65. g<<F[a][i];
  66. g<<' ';
  67. for(int i=F[b][0];i>0;--i)
  68. g<<F[b][i];
  69. g<<' ';
  70. Copy(SUM,F[b+2]);
  71. Subtract(SUM,F[a+1]);
  72. for(int i=SUM[0];i>0;--i)
  73. g<<SUM[i];
  74. g<<'\n';
  75. }
  76. return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement