1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include <iostream> #include <vector> #include <utility> using namespace std; typedef pair<vector<int>, bool> number; void makenum(number& num, int value) { if (value < 0) { num.second = true; value *= -1; } while (num.first.size() != value) { num.first.push_back(123); } } void add(number num1, number num2, number& result) { if (num1.first.size() == 0) { makenum(result, num2.first.size()); if (num2.second == true) result.second = true; if (num2.first.size() == 0) result.second = false; } else if (num2.first.size() == 0) { makenum(result, num1.first.size()); if (num1.second == true) result.second = true; if (num1.first.size() == 0) result.second = false; } else { if (num1.second == true && num2.second == false) { num1.first.pop_back(); num2.first.pop_back(); if (num2.first.size() == 0) { num2.second = true; } } else if (num1.second == false && num2.second == true) { num1.first.pop_back(); num2.first.pop_back(); if (num1.first.size() == 0) { cout << "a\n"; num1.second = true; } } else { num1.first.pop_back(); num2.first.push_back(123); } add(num1, num2, result); } } void show(number num) { if (num.second == 1) cout << "-"; cout << num.first.size() << endl; } int main() { number five; makenum(five, 3); number three; makenum(three, -2); number result; add(five, three, result); show(result); } |
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dXRpbGl0eT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHBhaXI8dmVjdG9yPGludD4sIGJvb2w+IG51bWJlcjsKCnZvaWQgbWFrZW51bShudW1iZXImIG51bSwgaW50IHZhbHVlKSB7CglpZiAodmFsdWUgPCAwKSB7CgkJbnVtLnNlY29uZCA9IHRydWU7CgkJdmFsdWUgKj0gLTE7Cgl9Cgl3aGlsZSAobnVtLmZpcnN0LnNpemUoKSAhPSB2YWx1ZSkgewoJCW51bS5maXJzdC5wdXNoX2JhY2soMTIzKTsKCX0KfQoKdm9pZCBhZGQobnVtYmVyIG51bTEsIG51bWJlciBudW0yLCBudW1iZXImIHJlc3VsdCkgewoJaWYgKG51bTEuZmlyc3Quc2l6ZSgpID09IDApIHsKCQltYWtlbnVtKHJlc3VsdCwgbnVtMi5maXJzdC5zaXplKCkpOwoJCWlmIChudW0yLnNlY29uZCA9PSB0cnVlKSByZXN1bHQuc2Vjb25kID0gdHJ1ZTsKCQlpZiAobnVtMi5maXJzdC5zaXplKCkgPT0gMCkgcmVzdWx0LnNlY29uZCA9IGZhbHNlOwoJfSBlbHNlIGlmIChudW0yLmZpcnN0LnNpemUoKSA9PSAwKSB7CgkJbWFrZW51bShyZXN1bHQsIG51bTEuZmlyc3Quc2l6ZSgpKTsKCQlpZiAobnVtMS5zZWNvbmQgPT0gdHJ1ZSkgcmVzdWx0LnNlY29uZCA9IHRydWU7CgkJaWYgKG51bTEuZmlyc3Quc2l6ZSgpID09IDApIHJlc3VsdC5zZWNvbmQgPSBmYWxzZTsKCX0gZWxzZSB7CgkJaWYgKG51bTEuc2Vjb25kID09IHRydWUgJiYgbnVtMi5zZWNvbmQgPT0gZmFsc2UpIHsKCQkJbnVtMS5maXJzdC5wb3BfYmFjaygpOwoJCQludW0yLmZpcnN0LnBvcF9iYWNrKCk7CgkJCWlmIChudW0yLmZpcnN0LnNpemUoKSA9PSAwKSB7CgkJCQludW0yLnNlY29uZCA9IHRydWU7CgkJCX0KCQl9IGVsc2UgaWYgKG51bTEuc2Vjb25kID09IGZhbHNlICYmIG51bTIuc2Vjb25kID09IHRydWUpIHsKCQkJbnVtMS5maXJzdC5wb3BfYmFjaygpOwoJCQludW0yLmZpcnN0LnBvcF9iYWNrKCk7CgkJCWlmIChudW0xLmZpcnN0LnNpemUoKSA9PSAwKSB7CgkJCQljb3V0IDw8ICJhXG4iOwoJCQkJbnVtMS5zZWNvbmQgPSB0cnVlOwoJCQl9CgkJfSBlbHNlIHsKCQkJbnVtMS5maXJzdC5wb3BfYmFjaygpOwoJCQludW0yLmZpcnN0LnB1c2hfYmFjaygxMjMpOwoJCX0KCQlhZGQobnVtMSwgbnVtMiwgcmVzdWx0KTsKCX0KfQoKdm9pZCBzaG93KG51bWJlciBudW0pIHsKCWlmIChudW0uc2Vjb25kID09IDEpIGNvdXQgPDwgIi0iOwoJY291dCA8PCBudW0uZmlyc3Quc2l6ZSgpIDw8IGVuZGw7Cn0KCmludCBtYWluKCkgewoJbnVtYmVyIGZpdmU7CgltYWtlbnVtKGZpdmUsIDMpOwoJbnVtYmVyIHRocmVlOwoJbWFrZW51bSh0aHJlZSwgLTIpOwoJbnVtYmVyIHJlc3VsdDsKCWFkZChmaXZlLCB0aHJlZSwgcmVzdWx0KTsKCXNob3cocmVzdWx0KTsKfQ==
prog.cpp: In function ‘void makenum(number&, int)’: prog.cpp:14: warning: comparison between signed and unsigned integer expressions
-
upload with new input
-
result: Success time: 0s memory: 2860 kB returned value: 0
1


