PAT 1079 延迟的回文数

2024-04-02 06:38
文章标签 回文 pat 延迟 1079

本文主要是介绍PAT 1079 延迟的回文数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:请点击
分析:
1 题目给出“不超过1000位的正整数,”显然要用大数加法那样处理,即对string型的str倒序存储于int型的数组中,然后逐位相加且判断是否有进位。
AC代码

#include<iostream>
#include<cstring> 
#include<algorithm> 
#include<vector>
using namespace std;
bool isPalNum(vector<int> n){//判断是否为回文数 for(int i=0;i<n.size()/2;i++){if(n[i]!=n[n.size()-i-1]) return false;}return true;
}
void Print(vector<int> num){//输出函数 reverse(num.begin(),num.end());int i=0;while(num[i]==0) i++;//跳过前导0 for(i;i<num.size();i++) cout<<num[i];
}
int main(){vector<int> n1,n2,sum;string str;cin>>str;for(int i=0;i<str.length();i++) n1.push_back(str[str.length()-i-1]-'0');int cnt=0;sum.assign(n1.begin(),n1.begin()+n1.size());//将n1赋值给sumwhile(cnt<10){if(isPalNum(sum)) {Print(sum);cout<<" is a palindromic number."<<endl; return 0;}n2.assign(n1.begin(),n1.begin()+n1.size());//将n1赋值给n2 reverse(n2.begin(),n2.end());//反转n2 Print(n1);cout<<" + ";Print(n2);cout<<" = ";int flag=0;for(int i=0;i<n1.size();i++){sum[i]=n1[i]+n2[i];if(flag){//有来自上一位的进位 sum[i]++;flag=0;}if(sum[i]>=10){//本位和>=10 置flag=1表明本位有进位 sum[i]-=10;flag=1;}}if(flag) sum.push_back(1);//有向最高位的进位 最高位置1 Print(sum);cout<<endl;n1.assign(sum.begin(),sum.begin()+sum.size());//将sum赋值给n1cnt++;}if(isPalNum(sum)) {Print(sum);cout<<" is a palindromic number."<<endl;}else cout<<"Not found in 10 iterations."<<endl;return 0;
} 

这篇关于PAT 1079 延迟的回文数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869248

相关文章

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

MySQL主从同步延迟问题的全面解决方案

《MySQL主从同步延迟问题的全面解决方案》MySQL主从同步延迟是分布式数据库系统中的常见问题,会导致从库读取到过期数据,影响业务一致性,下面我将深入分析延迟原因并提供多层次的解决方案,需要的朋友可... 目录一、同步延迟原因深度分析1.1 主从复制原理回顾1.2 延迟产生的关键环节二、实时监控与诊断方案

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

Redis延迟队列的实现示例

《Redis延迟队列的实现示例》Redis延迟队列是一种使用Redis实现的消息队列,本文主要介绍了Redis延迟队列的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、什么是 Redis 延迟队列二、实现原理三、Java 代码示例四、注意事项五、使用 Redi

MyBatis延迟加载的处理方案

《MyBatis延迟加载的处理方案》MyBatis支持延迟加载(LazyLoading),允许在需要数据时才从数据库加载,而不是在查询结果第一次返回时就立即加载所有数据,延迟加载的核心思想是,将关联对... 目录MyBATis如何处理延迟加载?延迟加载的原理1. 开启延迟加载2. 延迟加载的配置2.1 使用

csu1328(近似回文串)

题意:求近似回文串的最大长度,串长度为1000。 解题思路:以某点为中心,向左右两边扩展,注意奇偶分开讨论,暴力解即可。时间复杂度O(n^2); 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstring>#include<string>#inclu

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

ActiveMQ—消息特性(延迟和定时消息投递)

ActiveMQ消息特性:延迟和定时消息投递(Delay and Schedule Message Delivery) 转自:http://blog.csdn.net/kimmking/article/details/8443872 有时候我们不希望消息马上被broker投递出去,而是想要消息60秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似