Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. const short N = 100;
  6. const short p = 10;
  7. char a[N+1];
  8. char b[N+1];
  9. char t1[N+1] = {0};
  10. char t2[N+1] = {0};
  11.  
  12. void mins(char a[]);
  13. void input(char a[]);
  14. void output(char a[]);
  15. void add(char dest[], char a[], char b[]);
  16. void sub(char dest[], char a[], char b[]);
  17. void mul(char dest[], char a[], char b[]);
  18. void div(char dest[], char a[], char b[]);
  19. void mulNum(char dest[], char a[], int n);
  20. void write(char dest[], int m);
  21.  
  22. int main()
  23. {
  24. char dest[N+1] = {0};
  25. input(a);
  26. input(b);
  27. div(dest, a, b);
  28. output(dest);
  29. return 0;
  30. }
  31.  
  32.  
  33.  
  34. void input(char a[]){
  35. char s[N+2];
  36. scanf("%s", s);
  37. int sign = 1, start = 0;
  38. if(s[0] == '+' || s[0] == '-'){
  39. start = 1;
  40. sign = (s[0] == '-' ? -1 : 1);
  41. }
  42. int i = strlen(s) - 1, j = 0;
  43. for(; i >= start; --i) a[j++] = s[i] -'0';
  44. for(; j<N; ++j) a[j] = 0;
  45. if(sign == -1) mins(a);
  46. }
  47.  
  48. void output(char a[]){
  49. int sign = 1;
  50. if(a[N-1] >= p/2){
  51. printf("-");
  52. sign=-1;
  53. mins(a);
  54. }
  55. int i = N-1;
  56. while(i > 0 && a[i] == 0) --i;
  57. for(; i>=0; --i){
  58. printf("%d", a[i]);
  59. if(sign == -1) mins(a);
  60. }
  61. }
  62.  
  63. void mins(char a[]){
  64. for(int i=0; i<N; ++i) a[i] = p -1 - a[i];
  65. for(int i=0; i<N; ++i){
  66. if(a[i] == p-1) a[i] = 0;
  67. else {
  68. a[i]++;
  69. break;
  70. }
  71. }
  72. };
  73.  
  74. void add(char dest[], char a[], char b[]){
  75. for(int i=0; i<N; ++i) dest[i] = 0;
  76. for(int i=0; i<N; ++i){
  77. int t = dest[i] + a[i] + b[i];
  78. dest[i] = t%p;
  79. dest[i+1] = t/p;
  80. }
  81. }
  82.  
  83. void sub(char dest[], char a[], char b[]){
  84. mins(b);
  85. add(dest, a, b);
  86. mins(b);
  87. }
  88.  
  89. void mul(char dest[], char a[], char b[]){
  90. for(int i=0; i<N; ++i) dest[i] = 0;
  91. for(int i=0; i<N; ++i) for(int j=0; i+j<N; ++j){
  92. int t =dest[i+j] + a[i] * b[j];
  93. dest[i+j] = t%p;
  94. dest[i+j+1] = t/p;
  95. }
  96. }
  97.  
  98. void mulNum(char dest[], char a[], int n){
  99. for(int i=0; i<N; ++i) dest[i] = 0;
  100. for(int i=0; i<N+1; ++i){
  101. dest[i]=dest[i] + a[i]*n;
  102. dest[i+1] += dest[i] / p;
  103. dest[i] = dest[i] % p;
  104. }
  105. }
  106.  
  107. void write(char dest[], int m){
  108. dest[0] = m;
  109. for(int i = 1; i < N+1; ++i){
  110. dest[i] = dest[i-1] / p;
  111. dest[i-1] = dest[i-1] % p;
  112. }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement