1024 Palindromic Number (25 分)(高精度加法)
阿新 • • 發佈:2018-12-14
水題一次過,按照題目要求模擬就行。 string又有些不熟練了。 在string某一位置插入一個字元或者字串相關函式複習:
iterator insert( iterator i, const char &ch ); basic_string &insert( size_type index, const basic_string &str ); basic_string &insert( size_type index, const char *str ); basic_string &insert( size_type index1, const basic_string &str, size_type index2, size_type num ); basic_string &insert( size_type index, const char *str, size_type num ); basic_string &insert( size_type index, size_type num, char ch ); void insert( iterator i, size_type num, const char &ch ); void insert( iterator i, iterator start, iterator end ); insert()函式的功能非常多: 在迭代器i表示的位置前面插入一個字元ch, 在字串的位置index插入字串str, 在字串的位置index插入字串str的子串(從index2開始,長num個字元), 在字串的位置index插入字串str的num個字元, 在字串的位置index插入num個字元ch的拷貝, 在迭代器i表示的位置前面插入num個字元ch的拷貝, 在迭代器i表示的位置前面插入一段字元,從start開始,以end結束.
#include <cstdio> #include <iostream> #include <set> #include <vector> #include <algorithm> #include <string> #include <cstring> using namespace std; string n, temp; int k, l, step; bool check(){ for (int i = 0; i<=l/2+1; i++) if (n[i] != n[l-i-1]) return false; return true; } void change(){ l = n.length(); int jin = 0, m = 0; for (int j = l-1; j>=0; j--){ m = (n[j]-'0' + n[l-j-1] -'0'); m += jin; temp[j] = m%10 + '0'; jin = m/10; } if (jin) { char c = jin + '0'; temp.insert(0, 1, c); } n = temp; step++; } int main() { cin >> n >> k; temp = n; l = n.length(); while(!check() && step<k){ change(); } cout << n << endl << step; return 0; }