PAT甲级1024 Palindromic Number:[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(b.size()==a.size()&& t) c.push_back(1);return c;}int main(){string n;int k;cin>>n>>k;vector<int> a;for(int i=n.size()-1;i>=0;i--) a.push_back(n[i]-'0');int cnt = 0 ;if(!check(a)){//如果a不是回文串while(cnt<k){ //看經過幾次變成回文串vector<int> b(a.rbegin(),a.rend()); //逆置a= add(a,b);// 相加cnt++;if(check(a)) break;}}for(int i=a.size()-1;i>=0;i--) cout<<a[i];cout<<endl<<cnt<<endl;}題目鏈接
PAT甲級1024 Palindromic Number
總結
以上是生活随笔為你收集整理的PAT甲级1024 Palindromic Number:[C++题解]回文串和高精度加法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT甲级1023 Have Fun w
- 下一篇: PAT甲级1058 A+B in Hog