fork download
  1.  
  2. #include <bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6. constexpr int maxm = 101;
  7.  
  8. int suma[2 * maxm];
  9. int suma_uj[2 * maxm];
  10.  
  11. int main()
  12. {
  13. int n;
  14. cin>>n;
  15.  
  16. for(int i = 0; i < n; ++i)
  17. {
  18. string liczba;
  19. cin >> liczba;
  20. int znak = 1;
  21.  
  22. if(liczba[0] == '-')
  23. {
  24. znak = -1;
  25. liczba.erase(liczba.begin());
  26. }
  27.  
  28. else if(liczba[0] == '+')
  29. {
  30. liczba.erase(liczba.begin());
  31. }
  32.  
  33. auto przecinek = liczba.find(',');
  34.  
  35. if(przecinek == string::npos)
  36. {
  37. przecinek = liczba.size();
  38. }
  39.  
  40. else
  41. {
  42. liczba.erase(przecinek, 1);
  43. }
  44.  
  45. for(int i = 0; i < (int)liczba.size(); ++i)
  46. {
  47. suma[maxm - przecinek + i] += znak * (liczba[i] - '0');
  48. suma_uj[maxm - przecinek + i] -= znak * (liczba[i] - '0');
  49. }
  50. }
  51.  
  52. string wynik;
  53. wynik.resize(maxm * 2, '0');
  54. int reszta = 0;
  55.  
  56. for(int i = 2 * maxm - 1; i >= 0; --i)
  57. {
  58. reszta += suma[i];
  59.  
  60. if(reszta == 0)
  61. {
  62. continue;
  63. }
  64.  
  65. wynik[i] = char('0' + (reszta % 10 + 10) % 10);
  66.  
  67. if(reszta < 0)
  68. {
  69. reszta = (reszta - 9) / 10;
  70. }
  71.  
  72. else
  73. {
  74. reszta /= 10;
  75. }
  76. }
  77.  
  78. if(reszta < 0)
  79. {
  80. wynik.resize(0);
  81. wynik.resize(maxm * 2, '0');
  82. reszta = 0;
  83.  
  84. for(int i = 2 * maxm - 1; i >= 0; --i)
  85. {
  86. reszta += suma_uj[i];
  87.  
  88. if(reszta == 0)
  89. {
  90. continue;
  91. }
  92.  
  93. wynik[i] = char('0' + (reszta % 10 + 10) % 10);
  94.  
  95. if(reszta < 0)
  96. {
  97. reszta = (reszta - 9) / 10;
  98. }
  99.  
  100. else
  101. {
  102. reszta /= 10;
  103. }
  104. }
  105. cout << '-';
  106. }
  107.  
  108. wynik.insert(wynik.begin() + maxm, ',');
  109.  
  110. while (wynik[0] == '0' && wynik[1] != ',')
  111. {
  112. wynik.erase(wynik.begin());
  113. }
  114.  
  115. while (wynik.back() == '0')
  116. wynik.pop_back();
  117.  
  118. if(wynik.back() == ',')
  119. {
  120. wynik.pop_back();
  121. }
  122.  
  123. cout << wynik << '\n';
  124.  
  125. return 0;
  126. }
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
0