Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int a[10000], b[10000], c[10000], na, nb, nc;
- void Memoreaza(char s[], int v[], int &n)
- {
- int i;
- n = 0;
- for (i = 0; s[i] != 0; i++)
- v[++n] = s[i] - '0';
- // inversez numarul mare
- for (i = 1; i <= n / 2; i++)
- swap(v[i], v[n-i+1]);
- }
- void Afisare(int v[], int n)
- {
- for (int i = n; i >= 1; i--)
- cout << v[i];
- cout << "\n";
- }
- void Aduna(int a[], int na, int b[], int nb, int c[], int &nc)
- {
- int i, t, x;
- if (na < nb)
- for (i = na + 1; i <= nb; i++)
- a[i] = 0;
- if (nb < na)
- for (i = nb + 1; i <= na; i++)
- b[i] = 0;
- nc = max(na, nb);
- t = 0;
- for (i = 1; i <= nc; i++)
- {
- x = a[i] + b[i] + t;
- if (x < 10)
- {
- c[i] = x;
- t = 0;
- }
- else
- {
- c[i] = x - 10;
- t = 1;
- }
- }
- if (t == 1)
- c[++nc] = 1;
- }
- //a = a * x
- void Produs(int a[], int &na, int x)
- {
- int t, i, w;
- t = 0;
- for (i = 1; i <= na; i++)
- {
- w = a[i] * x + t;
- a[i] = w % 10;
- t = w / 10;
- }
- while (t > 0)
- {
- a[++na] = t % 10;
- t /= 10;
- }
- }
- int Impartire(int a[], int na, int x, int b[], int &nb)
- {
- int i, q, cobor;
- cobor = 0;
- nb = na;
- for (i = na; i >= 1; i--)
- {
- cobor = cobor * 10 + a[i];
- q = cobor / x;
- b[i] = q;
- cobor -= (q * x);
- }
- while (b[nb] == 0) nb--;
- return cobor;
- }
- void Scadere(int a[], int na, int b[], int nb, int c[], int &nc)
- {
- int i, t, x;
- if (na < nb)
- for (i = na + 1; i <= nb; i++)
- a[i] = 0;
- if (nb < na)
- for (i = nb + 1; i <= na; i++)
- b[i] = 0;
- nc = max(na, nb);
- t = 0;
- for (i = 1; i <= nc; i++)
- {
- x = a[i] - b[i] + t;
- if (x < 0)
- {
- t = -1;
- c[i] = x + 10;
- }
- else
- {
- t = 0;
- c[i] = x;
- }
- }
- while (c[nc] == 0) nc--;
- }
- int main()
- {
- char s[200];
- cin >> s;
- Memoreaza(s, a, na);
- cin >> s;
- Memoreaza(s, b, nb);
- Scadere(a,na,b,nb,c,nc);
- Afisare(c,nc);
- /*Afisare(a, na);
- Afisare(b,nb);
- Aduna(a,na,b,nb,c,nc);
- Afisare(c,nc);
- Produs(a, na, 128);
- Afisare(a, na);
- Memoreaza("1",a,na);
- for (int i = 2; i <= 18; i++)
- Produs(a,na,i);
- Afisare(a, na);
- cout << Impartire(a,na,3001,b,nb) << "\n";
- Afisare(b, nb);
- */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment