Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- count int N = 300;
- char a[N + 1];
- //
- void input(char a[]) {
- char st[N + 2];
- scanf("%s", st);
- int sign = 1, pos = 0;
- if (st[0] == '+' || st[0] == '-') {
- sign = (st[0] == '+' ? 1 : -1);
- pos = 1;
- }
- int ia = 0, ist = strlen(st) - 1;
- for (; ist >= pos;)
- a[ia++] = st[ist--] - '0';
- for (; ia < N; ia++)
- a[ia] = 0;
- if (sign == -1)
- minus(a);
- }
- //
- void minus(char a[]) {
- for (int i = 0; i < N; ++i)
- a[i] = 9 - a[i];
- for (int i = 0; i < N; ++i)
- if (a[i] == 9)
- a[i] = 0;
- else {
- a[i]++;
- return;
- }
- }
- //
- void output(char a[]) {
- int sign = 1;
- if (a[N - 1] >= 5) {
- printf("-");
- minus(a);
- sign = -1;
- }
- int i = N - 1;
- while (i > 0 && a[i] == 0)
- --i;
- for (; i >= 0; --i)
- printf("%i", a[i]);
- if (sign == -1)
- minus(a);
- }
- //
- void add(char dest[], char a[], char b[]) {
- int um = 0;
- for (int i = 0; i < N; ++i) {
- int t = a[i] + b[i] + um;
- dest[i] = t % 10;
- um = t / 10;
- }
- }
- //
- void sub(char dest[], char a[], char b[]) {
- minus(b);
- add(dest, a, b);
- minus(b);
- }
- //
- void mult(char dest[], char a[], char b[]) {
- for (int i = 0; i < N; ++i)
- dest[i] = 0;
- for(int i = 0; i < N; ++i)
- for (int j = 0; i + j < N; ++j) {
- int t = a[i] * b[j] + dest[i + j];
- dest[i+j] = t % 10;
- dest[i + j + 1] += t / 10;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement