Advertisement
bibaboba12345

Untitled

Jun 28th, 2023
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4.  
  5. using namespace std;
  6. using ll = long long;
  7. const int N = 2e6+7, osn = 10;
  8.  
  9. struct digit{
  10. int a;
  11. digit(int g){
  12. a = g;
  13. }
  14. digit(){
  15. a = 0;
  16. }
  17. };
  18.  
  19. struct LongNumber{
  20. vector<digit> nmb;
  21. LongNumber(){
  22. nmb.clear();
  23. }
  24. LongNumber(long long h){
  25. nmb.clear();
  26. if(h == 0){
  27. nmb.push_back(digit(0));
  28. return;
  29. }
  30. while(h > 0){
  31. nmb.push_back(digit(h % osn));
  32. h /= osn;
  33. }
  34. }
  35. void print(){
  36. for(int i = nmb.size() - 1; i >= 0; i--){
  37. cout << nmb[i].a;
  38. }
  39. cout << "\n";
  40. }
  41. };
  42.  
  43. LongNumber operator + (LongNumber& a, LongNumber& b){
  44. if(a.nmb.size() < b.nmb.size()){
  45. swap(a,b);
  46. }
  47. LongNumber answ;
  48. int carry = 0;
  49. for(int i = 0; i < b.nmb.size(); i++){
  50. int k = carry + b.nmb[i].a + a.nmb[i].a;
  51. carry = 0;
  52. carry += k / osn;
  53. k %= osn;
  54. answ.nmb.push_back(digit(k));
  55. }
  56. if(carry != 0){
  57. answ.nmb.push_back(digit(carry));
  58. }
  59. return answ;
  60. }
  61.  
  62. LongNumber operator * (LongNumber& a, LongNumber& b){
  63. LongNumber answ;
  64. answ.nmb.resize(a.nmb.size() + b.nmb.size());
  65. for(int i = 0; i < answ.nmb.size(); i++){
  66. answ.nmb[i].a = 0;
  67. }
  68. for(int i = 0; i < a.nmb.size(); i++){
  69. for(int j = 0; j < b.nmb.size(); j++){
  70. int total_dg = i + j;
  71. answ.nmb[total_dg].a += a.nmb[i].a * b.nmb[j].a;
  72. }
  73. }
  74. int carry = 0;
  75. for(int i = 0; i < answ.nmb.size(); i++){
  76. int k = carry + answ.nmb[i].a;
  77. carry = 0;
  78. carry += k / osn;
  79. k %= osn;
  80. answ.nmb[i] = digit(k);
  81. }
  82. if(answ.nmb[answ.nmb.size() - 1].a == 0){
  83. answ.nmb.pop_back();
  84. }
  85. return answ;
  86. }
  87.  
  88.  
  89.  
  90. signed main() {
  91. auto n = LongNumber(999);
  92. auto m = LongNumber(999);
  93. n.print();
  94. n = n*m;
  95. n.print();
  96.  
  97. }
  98.  
  99.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement