PAT甲级1136 A Delayed Palindrome :[C++题解]回文串和高精度并输出过程
生活随笔
收集整理的這篇文章主要介紹了
PAT甲级1136 A Delayed Palindrome :[C++题解]回文串和高精度并输出过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目分析
- 題目鏈接
題目分析
此題和PAT甲級1024 Palindromic Number:[C++題解]回文串和高精度加法 一樣。區別是多了輸出整個計算過程。
下面是主要知識點。
一個判斷是否是回文數的函數:check,思路是使用雙指針從兩端分別往里走。
另一個是高精度加法函數add,傳入兩個vector。
另外,vector逆序構造可以直接使用 vector的構造函數的一種
vector<int> a; //逆序構造vector vector<int> b(a.rbegin(),a.rend());ac代碼
#include<bits/stdc++.h> using namespace std;bool check(vector<int>& a){for(int i=0 , j =a.size()-1; i<j; i++ ,j--)if(a[i] != a[j]) return false;return true; }vector<int> add(vector<int>& a, vector<int>& b){vector<int> c;int t =0;for(int i=0; i<a.size() || i<b.size(); i++){int s = t;if(i<a.size()) s+=a[i];if(i<b.size()) s+=b[i];c.push_back( s%10);t= s/10;}if(a.size() == b.size() && t) c.push_back(1);for(int i=a.size()-1;i>=0; i--) cout<<a[i];cout<<" + ";for(int i=b.size()-1;i>=0;i--) cout<<b[i];cout<<" = ";for(int i=c.size()-1;i>=0;i--) cout<<c[i];cout<<endl;return c; }int main(){string A;cin>>A;vector<int> a;for(int i=A.size()-1;i>=0; i--) a.push_back(A[i]-'0'); if(!check(a)){int cnt = 0;while(cnt<10){vector<int> b(a.rbegin(),a.rend());a = add(a ,b);cnt++;if(check(a)){for(int i=a.size()-1;i>=0;i--) cout<<a[i];printf(" is a palindromic number.");break;}}if(cnt==10) printf("Not found in 10 iterations.");}else{for(int i=a.size()-1;i>=0;i--) cout<<a[i];printf(" is a palindromic number.");}}題目鏈接
PAT甲級1136 A Delayed Palindrome
總結
以上是生活随笔為你收集整理的PAT甲级1136 A Delayed Palindrome :[C++题解]回文串和高精度并输出过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT甲级1058 A+B in Hog
- 下一篇: PAT甲级1010 Radix :[C+