fork(2) download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int lewal(string);
  6. int prawal(string);
  7. int znak(string);
  8. int lewax(string);
  9. int prawax(string);
  10. bool warunek1(string);
  11. bool warunek2(string);
  12. bool warunek3(string);
  13. bool warunek4(string);
  14.  
  15. int main() {
  16. int n;
  17. int rozwiazanie;
  18. string rownanie;
  19. bool brak = false;
  20.  
  21. cin >> n;
  22.  
  23. for(int i = 0; i < n; i++) {
  24.  
  25. cin >> rownanie;
  26.  
  27. int sumax = lewax(rownanie) - prawax(rownanie);
  28. int sumal = prawal(rownanie) - lewal(rownanie);
  29.  
  30. if(sumal != 0 && sumax != -1 && sumax != 1) {
  31. if(sumax != 0)
  32. rozwiazanie = sumal / sumax;
  33. }
  34. else if(sumax == -1) {
  35. rozwiazanie = -sumal;
  36. }
  37. else if(sumax == 1) {
  38. rozwiazanie = sumal;
  39. }
  40.  
  41. if(prawax(rownanie) == lewax(rownanie)) {
  42. brak = true;
  43. }
  44.  
  45. if(warunek1(rownanie) && warunek2(rownanie) && warunek3(rownanie) && warunek4(rownanie)) {
  46. ;
  47. }
  48. else {
  49. brak = true;
  50. }
  51.  
  52. if(!brak) {
  53. // cout << "rozwiazanie = " << rozwiazanie << '\n';
  54. cout << rozwiazanie << '\n';
  55. }
  56. else {
  57. cout << "NIE\n";
  58. brak = false;
  59. }
  60.  
  61.  
  62. }
  63. }
  64.  
  65. int lewal(string a) {
  66. int r = znak(a);
  67. int liczby = 0;
  68. int liczba;
  69. string tym = "";
  70. bool war = true;
  71. bool minus = false;
  72.  
  73. for(int i = 0; i < r; i++) {
  74.  
  75. if(a[i] >= '0' && a[i] <= '9') {
  76. int j = i;
  77. if(a[i-1] == '-') minus = true;
  78. while(war) {
  79. if(a[j] >= '0' && a[j] <= '9') {
  80. tym += a[j];
  81. }
  82. else {
  83. if(a[j] == 'x') {
  84. minus = false;
  85. tym.clear();
  86. i = j;
  87. break;
  88. }
  89. else {
  90. liczba = atoi(tym.c_str());
  91. if(minus) {
  92. minus = false;
  93. liczby -= liczba;
  94. }
  95. else {
  96. liczby += liczba;
  97. }
  98. tym.clear();
  99. i = j;
  100. break;
  101. }
  102. }
  103. j++;
  104. }
  105. }
  106.  
  107. }
  108. return liczby;
  109. }
  110.  
  111. int prawal(string a) {
  112. int r = znak(a);
  113. int liczby = 0;
  114. int liczba;
  115. string tym = "";
  116. bool war = true;
  117. bool minus = false;
  118.  
  119. for(int i = r; i < a.length(); i++) {
  120.  
  121. if(a[i] >= '0' && a[i] <= '9') {
  122. int j = i;
  123. if(a[i-1] == '-') minus = true;
  124. while(war) {
  125. if(a[j] >= '0' && a[j] <= '9') {
  126. tym += a[j];
  127. }
  128. else {
  129. if(a[j] == 'x') {
  130. minus = false;
  131. tym.clear();
  132. i = j;
  133. break;
  134. }
  135. else {
  136. liczba = atoi(tym.c_str());
  137. if(minus) {
  138. minus = false;
  139. liczby -= liczba;
  140. }
  141. else {
  142. liczby += liczba;
  143. }
  144. tym.clear();
  145. i = j;
  146. break;
  147. }
  148. }
  149. j++;
  150. }
  151. }
  152.  
  153. }
  154. return liczby;
  155. }
  156.  
  157. int prawax(string a) {
  158. int r = znak(a);
  159. int liczby = 0;
  160. int liczba;
  161. string tym = "";
  162. bool war = true;
  163. bool minus = false;
  164.  
  165. for(int i = r; i < a.length(); i++) {
  166.  
  167. if(a[i] >= '0' && a[i] <= '9') {
  168. int j = i;
  169. if(a[i-1] == '-') {
  170. minus = true;
  171. }
  172.  
  173. tym += a[i];
  174. }
  175. else {
  176. if(a[i] == 'x') {
  177.  
  178. if(a[i-1] == '=' || a[i-1] == '+') {
  179. tym = "1";
  180. }
  181. else if(a[i-1] == '-') {
  182. tym = "1";
  183. minus = true;
  184. }
  185. liczba = atoi(tym.c_str());
  186.  
  187. if(minus) {
  188. liczby -= liczba;
  189. minus = false;
  190. tym = "";
  191. }
  192. else {
  193. liczby += liczba;
  194. tym = "";
  195. }
  196.  
  197. }
  198. else {
  199. minus = false;
  200. tym = "";
  201. }
  202. }
  203.  
  204.  
  205. }
  206. return liczby;
  207. }
  208.  
  209. int lewax(string a) {
  210. int r = znak(a);
  211. int liczby = 0;
  212. int liczba;
  213. string tym = "";
  214. bool war = true;
  215. bool minus = false;
  216.  
  217. for(int i = 0; i < r; i++) {
  218.  
  219. if(a[i] >= '0' && a[i] <= '9') {
  220. int j = i;
  221. if(a[i-1] == '-') {
  222. minus = true;
  223. }
  224.  
  225. tym += a[i];
  226. }
  227. else {
  228. if(a[i] == 'x') {
  229.  
  230. if(a[i-1] == '=' || a[i-1] == '+' || (i == 0 && a[i] == 'x')) {
  231. tym = "1";
  232. }
  233. else if(a[i-1] == '-') {
  234. tym = "1";
  235. minus = true;
  236. }
  237. liczba = atoi(tym.c_str());
  238.  
  239. if(minus) {
  240. liczby -= liczba;
  241. minus = false;
  242. tym = "";
  243. }
  244. else {
  245. liczby += liczba;
  246. tym = "";
  247. }
  248.  
  249. }
  250. else {
  251. minus = false;
  252. tym = "";
  253. }
  254. }
  255.  
  256.  
  257. }
  258. return liczby;
  259. }
  260.  
  261. int znak(string a) {
  262. int r;
  263.  
  264. for(int i = 0; i < a.length(); i++) {
  265. if(a[i] == '=') {
  266. r = i;
  267. break;
  268. }
  269. }
  270. return r;
  271. }
  272.  
  273. bool warunek1(string a) {
  274. for(int i = 0; i < a.length(); i++) {
  275. if(a[i] == '+' || a[i] == '-' || a[i] == '=' || a[i] == 'x' || (a[i] >= '0' && a[i] <= '9')) {
  276. ;
  277. }
  278. else {
  279. return false;
  280. break;
  281. }
  282. }
  283. return true;
  284. }
  285.  
  286. bool warunek2(string a) {
  287. int l = 0;
  288. for(int i = 0; i < a.length(); i++) {
  289. if(a[i] == '=') {
  290. l++;
  291. }
  292. }
  293. if(l == 0) {
  294. return false;
  295. }
  296. else if(l > 1) {
  297. return false;
  298. }
  299. else {
  300. return true;
  301. }
  302. }
  303.  
  304. bool warunek3(string a) {
  305. int kon = a.length()-1;
  306. if(a[0] == '=' || a[0] == '+' || a[kon] == '=' || a[kon] == '+' || a[kon] == '-') {
  307. return false;
  308. }
  309. else {
  310. return true;
  311. }
  312. }
  313.  
  314. bool warunek4(string a) {
  315. bool w = false;
  316.  
  317. for(int i = 0; i < a.length(); i++) {
  318. if(a[i] == '+') {
  319. if(a[i+1] == '+') w = true;
  320. if(a[i+1] == '-') w = true;
  321. }
  322.  
  323. if(a[i] == '-') {
  324. if(a[i+1] == '-') w = true;
  325. if(a[i+1] == '+') w = true;
  326. }
  327.  
  328. if(a[i] == 'x') {
  329. if(a[i+1] == 'x') w = true;
  330. }
  331.  
  332. if(a[i] == '=') {
  333. if(a[i+1] == '+') w = true;
  334. }
  335.  
  336. }
  337. if(w) return false;
  338. else return true;
  339. }
Success #stdin #stdout 0s 5464KB
stdin
1
-x=x
stdout
-1760379464