From 7e58636730434d041396c802a6f4d9f00ed0e771 Mon Sep 17 00:00:00 2001 From: liuchuo <95323362@qq.com> Date: Sun, 23 Sep 2018 15:36:03 +0800 Subject: [PATCH] :bug: bug: fix a bug --- .../1136. A Delayed Palindrome (20).cpp | 54 +++++++++---------- ...\233\236\346\226\207\346\225\260 (20).cpp" | 54 +++++++++---------- 2 files changed, 52 insertions(+), 56 deletions(-) diff --git a/AdvancedLevel_C++/1136. A Delayed Palindrome (20).cpp b/AdvancedLevel_C++/1136. A Delayed Palindrome (20).cpp index 7333596..1821f4f 100644 --- a/AdvancedLevel_C++/1136. A Delayed Palindrome (20).cpp +++ b/AdvancedLevel_C++/1136. A Delayed Palindrome (20).cpp @@ -1,39 +1,37 @@ #include #include using namespace std; -string add(string a) { - string b = a, ans; - reverse(b.begin(), b.end()); - int len = a.length(), carry = 0; - for (int i = 0; i < len; i++) { - int num = (a[i] - '0' + b[i] - '0') + carry; - carry = 0; - if (num >= 10) { - carry = 1; - num = num - 10; - } - ans += char(num + '0'); +string rev(string s) { + reverse(s.begin(), s.end()); + return s; +} +string add(string s1, string s2) { + string s = s1; + int carry = 0; + for (int i = s1.size() - 1; i >= 0; i--) { + s[i] = (s1[i] - '0' + s2[i] - '0' + carry) % 10 + '0'; + carry = (s1[i] - '0' + s2[i] - '0' + carry) / 10; } - if(carry == 1) ans += '1'; - reverse(ans.begin(), ans.end()); - return ans; + if (carry > 0) s = "1" + s; + return s; } int main() { - string s; + string s, sum; + int n = 10; cin >> s; - int cnt = 0; - while (cnt < 10) { - string t = s; - reverse(t.begin(), t.end()); - if (t == s) { - cout << s << " is a palindromic number."; - break; - } else { - cout << s << " + " << t << " = " << add(s) << endl; - s = add(s); - cnt++; + if (s == rev(s)) { + cout << s << " is a palindromic number.\n"; + return 0; + } + while (n--) { + sum = add(s, rev(s)); + cout << s << " + " << rev(s) << " = " << sum << endl; + if (sum == rev(sum)) { + cout << sum << " is a palindromic number.\n"; + return 0; } + s = sum; } - if (cnt == 10) cout << "Not found in 10 iterations."; + cout << "Not found in 10 iterations.\n"; return 0; } \ No newline at end of file diff --git "a/BasicLevel_C++/1079. \345\273\266\350\277\237\347\232\204\345\233\236\346\226\207\346\225\260 (20).cpp" "b/BasicLevel_C++/1079. \345\273\266\350\277\237\347\232\204\345\233\236\346\226\207\346\225\260 (20).cpp" index 7333596..1821f4f 100644 --- "a/BasicLevel_C++/1079. \345\273\266\350\277\237\347\232\204\345\233\236\346\226\207\346\225\260 (20).cpp" +++ "b/BasicLevel_C++/1079. \345\273\266\350\277\237\347\232\204\345\233\236\346\226\207\346\225\260 (20).cpp" @@ -1,39 +1,37 @@ #include #include using namespace std; -string add(string a) { - string b = a, ans; - reverse(b.begin(), b.end()); - int len = a.length(), carry = 0; - for (int i = 0; i < len; i++) { - int num = (a[i] - '0' + b[i] - '0') + carry; - carry = 0; - if (num >= 10) { - carry = 1; - num = num - 10; - } - ans += char(num + '0'); +string rev(string s) { + reverse(s.begin(), s.end()); + return s; +} +string add(string s1, string s2) { + string s = s1; + int carry = 0; + for (int i = s1.size() - 1; i >= 0; i--) { + s[i] = (s1[i] - '0' + s2[i] - '0' + carry) % 10 + '0'; + carry = (s1[i] - '0' + s2[i] - '0' + carry) / 10; } - if(carry == 1) ans += '1'; - reverse(ans.begin(), ans.end()); - return ans; + if (carry > 0) s = "1" + s; + return s; } int main() { - string s; + string s, sum; + int n = 10; cin >> s; - int cnt = 0; - while (cnt < 10) { - string t = s; - reverse(t.begin(), t.end()); - if (t == s) { - cout << s << " is a palindromic number."; - break; - } else { - cout << s << " + " << t << " = " << add(s) << endl; - s = add(s); - cnt++; + if (s == rev(s)) { + cout << s << " is a palindromic number.\n"; + return 0; + } + while (n--) { + sum = add(s, rev(s)); + cout << s << " + " << rev(s) << " = " << sum << endl; + if (sum == rev(sum)) { + cout << sum << " is a palindromic number.\n"; + return 0; } + s = sum; } - if (cnt == 10) cout << "Not found in 10 iterations."; + cout << "Not found in 10 iterations.\n"; return 0; } \ No newline at end of file