欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

PAT甲级1136 A Delayed Palindrome :[C++题解]回文串和高精度并输出过程

发布时间:2025/4/5 c/c++ 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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++题解]回文串和高精度并输出过程的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。