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+