Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- const short N = 100;
- const short p = 10;
- char a[N+1];
- char b[N+1];
- char t1[N+1] = {0};
- char t2[N+1] = {0};
- void mins(char a[]);
- void input(char a[]);
- void output(char a[]);
- void add(char dest[], char a[], char b[]);
- void sub(char dest[], char a[], char b[]);
- void mul(char dest[], char a[], char b[]);
- void div(char dest[], char a[], char b[]);
- void mulNum(char dest[], char a[], int n);
- void write(char dest[], int m);
- int main()
- {
- char dest[N+1] = {0};
- input(a);
- input(b);
- div(dest, a, b);
- output(dest);
- return 0;
- }
- void input(char a[]){
- char s[N+2];
- scanf("%s", s);
- int sign = 1, start = 0;
- if(s[0] == '+' || s[0] == '-'){
- start = 1;
- sign = (s[0] == '-' ? -1 : 1);
- }
- int i = strlen(s) - 1, j = 0;
- for(; i >= start; --i) a[j++] = s[i] -'0';
- for(; j<N; ++j) a[j] = 0;
- if(sign == -1) mins(a);
- }
- void output(char a[]){
- int sign = 1;
- if(a[N-1] >= p/2){
- printf("-");
- sign=-1;
- mins(a);
- }
- int i = N-1;
- while(i > 0 && a[i] == 0) --i;
- for(; i>=0; --i){
- printf("%d", a[i]);
- if(sign == -1) mins(a);
- }
- }
- void mins(char a[]){
- for(int i=0; i<N; ++i) a[i] = p -1 - a[i];
- for(int i=0; i<N; ++i){
- if(a[i] == p-1) a[i] = 0;
- else {
- a[i]++;
- break;
- }
- }
- };
- void add(char dest[], char a[], char b[]){
- for(int i=0; i<N; ++i) dest[i] = 0;
- for(int i=0; i<N; ++i){
- int t = dest[i] + a[i] + b[i];
- dest[i] = t%p;
- dest[i+1] = t/p;
- }
- }
- void sub(char dest[], char a[], char b[]){
- mins(b);
- add(dest, a, b);
- mins(b);
- }
- void mul(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 =dest[i+j] + a[i] * b[j];
- dest[i+j] = t%p;
- dest[i+j+1] = t/p;
- }
- }
- void mulNum(char dest[], char a[], int n){
- for(int i=0; i<N; ++i) dest[i] = 0;
- for(int i=0; i<N+1; ++i){
- dest[i]=dest[i] + a[i]*n;
- dest[i+1] += dest[i] / p;
- dest[i] = dest[i] % p;
- }
- }
- void write(char dest[], int m){
- dest[0] = m;
- for(int i = 1; i < N+1; ++i){
- dest[i] = dest[i-1] / p;
- dest[i-1] = dest[i-1] % p;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement