Advertisement
a53

Baza

a53
Nov 24th, 2017
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. #include <fstream>
  2. #include <cstring>
  3. using namespace std;
  4. ifstream f("baza.in");
  5. ofstream g("baza.out");
  6. char cuv[51];
  7. typedef int NrMare[1010];
  8. NrMare p,nr;
  9.  
  10. void AtribMic(NrMare x,int n)
  11. {
  12. x[0]=0;
  13. if(n==0)
  14. x[(x[0]=1)]=0;
  15. else
  16. for(;n;n/=10)
  17. x[++x[0]]=n%10;
  18. }
  19.  
  20. void Adunare(NrMare x,NrMare y) /// x = x + y
  21. {
  22. if(y[0]==1&&y[1]==0)
  23. return;
  24. int t=0;
  25. if(x[0]<y[0])
  26. x[0]=y[0];
  27. for(int i=1;i<=x[0];++i,t/=10)
  28. t=x[i]+y[i]+t,x[i]=t%10; /// echivalent x[i]=(t+=x[i]+y[i])%10
  29. if(t)
  30. x[++x[0]]=t;
  31. }
  32.  
  33. void ProdusMic(NrMare x,int n) ///x <- x*n
  34. {
  35. int t=0;
  36. if(x[0]==1&&x[1]==0)
  37. return;
  38. for(int i=1;i<=x[0];++i,t/=10)
  39. t+=x[i]*n,x[i]=t%10;
  40. for(;t;t/=10)
  41. x[++x[0]]=t%10;
  42. }
  43.  
  44. void ProdusMare(NrMare x,NrMare y) ///x = x * y
  45. {
  46. int i,j,t=0;
  47. if(x[0]==1&&x[1]==0)
  48. return;
  49. NrMare z; /// Stabilesc lungimea rezultatului. S-ar putea modifica
  50. z[0]=x[0]+y[0]-1; /// Initializez vectorul z
  51. for(i=1;i<=x[0]+y[0];++i)
  52. z[i]=0;
  53. for(i=1;i<=x[0];++i) /// Calculez produsele intermediare, impreuna cu suma intermediara
  54. for(j=1;j<=y[0];++j)
  55. z[i+j-1]+=x[i]*y[j];
  56. for(i=1;i<=z[0];++i) /// Corectez sumele intermediare
  57. t+=z[i],z[i]=t%10,t/=10;
  58. if(t) /// Verific daca trebuie modificata lungimea rezultatului (cand avem transfer)
  59. z[++z[0]]=t;
  60. for(i=0;i<=z[0];++i) /// Pun rezultatul in x
  61. x[i]=z[i];
  62. }
  63.  
  64. void AfisareMare(NrMare x)
  65. {
  66. for(int i=x[0];i>=1;--i)
  67. g<<x[i];
  68. }
  69.  
  70. int main()
  71. {
  72. f>>cuv;
  73. int L=strlen(cuv);
  74. p[0]=1;p[1]=1; /// Initializam p=1
  75. nr[0]=1;nr[1]=0;
  76. NrMare x;
  77. for(int i=L-1;i>=0;--i)
  78. {
  79. AtribMic(x,cuv[i]-'a');
  80. ProdusMare(x,p);
  81. Adunare(nr,x);
  82. ProdusMic(p,26);
  83. }
  84. AfisareMare(nr);
  85. return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement