fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdio>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. vector<int> a,b,c,sol1,solution;
  9.  
  10. void add()
  11. {
  12. int i,carry=0,num;
  13. for(i=0;i<a.size();i++)
  14. {
  15. if(i<b.size())
  16. {
  17. num=a[i]+b[i]+carry;
  18. }
  19. else
  20. {
  21. num=a[i]+carry;
  22. }
  23.  
  24. c.push_back(num%10);
  25. carry=num/10;
  26. }
  27. while(i<b.size())
  28. {
  29. num=b[i]+carry;
  30. c.push_back(num%10);
  31. carry=num/10;
  32. i++;
  33. }
  34. while(carry>0)
  35. {
  36. c.push_back(carry%10);
  37. carry=carry/10;
  38. }
  39. //reverse(a.begin())
  40.  
  41. }
  42. void sub(int check)
  43. {
  44. int num,carry,k=0,i;
  45. solution=c;
  46. for(i=0;i<solution.size();i++)
  47. {
  48. if(i<sol1.size())
  49. {
  50. num=solution[i]-sol1[i];
  51. if(num<0)
  52. {
  53. k=i+1;
  54. while(solution[k]<=0)
  55. {
  56. solution[k]=9;
  57. k++;
  58. }
  59. num=num+10;
  60. solution[k]--;
  61. }
  62. solution[i]=num;
  63. }
  64. }
  65. if(check==1)
  66. {
  67. a=solution;
  68. }
  69. else
  70. {
  71. b=solution;
  72. }
  73. }
  74.  
  75. void print_sol()
  76. {
  77. int i,k=0;
  78. while(a[k]==0)
  79. {
  80. k++;
  81. }
  82. for(i=k;i<a.size();i++)
  83. {
  84. printf("%d",a[i]);
  85. }
  86. printf(" + ");
  87. k=0;
  88. while(b[k]==0)
  89. {
  90. k++;
  91. }
  92. for(i=k;i<b.size();i++)
  93. {
  94. printf("%d",b[i]);
  95. }
  96. printf(" = ");
  97. k=0;
  98. while(c[k]==0)
  99. {
  100. k++;
  101. }
  102. for(i=k;i<c.size();i++)
  103. {
  104. printf("%d",c[i]);
  105. }
  106. }
  107. int main()
  108. {
  109. int i=0,t;
  110. string buffer;
  111. char ch,curr_vec;
  112. int no_fill=1;
  113. cin>>t;
  114. cin.ignore();
  115. while(t--)
  116. {
  117. printf("\n");
  118. getline(cin,buffer);
  119. i=0;
  120. no_fill=1;
  121. while(buffer[i])
  122. {
  123. ch=buffer[i];
  124. while(isspace(ch)==false)
  125. {
  126. if(ch=='m')
  127. {
  128. //a.clear();
  129. no_fill=2;
  130. // break;
  131. }
  132. a.push_back((int)ch-48);
  133. i++;
  134. ch=buffer[i];
  135. }
  136. i+=3;
  137. ch=buffer[i];
  138. if(no_fill==2)
  139. {
  140. a.clear();
  141. no_fill=1;
  142. }
  143. while(isspace(ch)==false)
  144. {
  145. if(ch=='m')
  146. {
  147. no_fill=2;
  148. }
  149. b.push_back((int)ch-48);
  150. i++;
  151. ch=buffer[i];
  152. }
  153. i+=3;
  154. ch=buffer[i];
  155. if(no_fill==2)
  156. {
  157. b.clear();
  158. no_fill=1;
  159. }
  160. while(buffer[i])
  161. {
  162. if(ch=='m')
  163. {
  164. i=buffer.length();
  165. c.clear();
  166. break;
  167. }
  168. c.push_back((int)buffer[i]-48);
  169. i++;
  170. ch=buffer[i];
  171. }
  172.  
  173. }
  174. reverse(a.begin(),a.end());
  175. reverse(b.begin(),b.end());
  176. reverse(c.begin(),c.end());
  177. if(c.empty())
  178. {
  179. add();
  180. }
  181. else
  182. {
  183. if(a.empty())
  184. {
  185. sol1=b;
  186. sub(1);
  187. // c- first store in solution ---a empty
  188. }
  189. else
  190. {
  191. sol1=a;
  192. sub(2);
  193. // b empty
  194. }
  195. //first.clear();
  196. }
  197.  
  198. reverse(a.begin(),a.end());
  199. reverse(b.begin(),b.end());
  200. reverse(c.begin(),c.end());
  201. print_sol();
  202. cout<<endl;
  203. a.clear();
  204. b.clear();
  205. c.clear();
  206. sol1.clear();
  207. solution.clear();
  208.  
  209. }
  210.  
  211.  
  212. return 0;
  213. }
  214.  
Runtime error #stdin #stdout 0s 2692KB
stdin
3

23 + 47 = machula

3247 + 5machula2 = 3749

machula13 + 75425 = 77038
stdout