Advertisement
a53

Operatii cu numere mari

a53
Mar 22nd, 2017
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. /// Vom considera ca numerele mari sunt vectori in care elementul de indice 0 indica lungimea numarului,
  2. /// iar cifrele sunt retinute in ordinea inversa decat cea a citirii.
  3.  
  4. /// Suma a doua numere mari
  5. void add(int A[], int B[])
  6. { /// A <- A+B
  7. int i, t = 0;
  8. for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
  9. A[i] = (t += A[i] + B[i]) % 10;
  10. A[0] = i - 1;
  11. }
  12.  
  13. /// Scaderea a doua numere mari
  14. void sub(int A[], int B[])
  15. {/// A<-A-B
  16. int i, t = 0;
  17. for (i = 1; i <= A[0]; i++) {
  18. A[i] -= ((i <= B[0]) ? B[i] : 0) + t;
  19. A[i] += (t = A[i] < 0) * 10;
  20. }
  21. for (; A[0] > 1 && !A[A[0]]; A[0]--);
  22. }
  23.  
  24. /// Inmultirea unui numar mare cu un numar mic
  25. void mul(int A[], int B)
  26. {/// A<-A*B
  27. int i, t = 0;
  28. for (i = 1; i <= A[0] || t; i++, t /= 10)
  29. A[i] = (t += A[i] * B) % 10;
  30. A[0] = i - 1;
  31. }
  32.  
  33. /// Inmultirea unui numar mare cu un numar mare
  34. void sub(int A[], int B[])
  35. {/// A<-A*B
  36. int i, t = 0;
  37. for (i = 1; i <= A[0]; i++) {
  38. A[i] -= ((i <= B[0]) ? B[i] : 0) + t;
  39. A[i] += (t = A[i] < 0) * 10;
  40. }
  41. for (; A[0] > 1 && !A[A[0]]; A[0]--);
  42. }
  43.  
  44. /// Impartirea unui numar mare la un numar mic
  45. void div(int A[], int B)
  46. {/// A<-A/B
  47. int i, t = 0;
  48. for (i = A[0]; i > 0; i--, t %= B)
  49. A[i] = (t = t * 10 + A[i]) / B;
  50. for (; A[0] > 1 && !A[A[0]]; A[0]--);
  51. }
  52.  
  53. /// Restul unui numar mare la un numar mic
  54. int mod(int A[], int B)
  55. { t<-A%B
  56. int i, t = 0;
  57. for (i = A[0]; i > 0; i--)
  58. t = (t * 10 + A[i]) % B;
  59. return t;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement