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

相关文章

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秒以后发给消费者,或者我们想让消息没隔一定时间投递一次,一共投递指定的次数。。。 类似

MySQL主从同步延迟原理及解决方案

概述 MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力; ②在从主服务器进行备份,避免备份期间影响主服务器服务; ③当主服务器出现问题时,可以切换到从服务器。 相信大家对于这些好处已经非常了解了,在项目的部署中也采用这种方案。但是MySQL的主从同步一直有从库延迟的问题,那么为什么会有这种问题。这种问题如何解决呢? MyS

NYOJ 37 回文字符串(记忆化搜索)

OJ题目 : 戳这里~~ 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。 输入 第一行给出整数N(0<N<100) 接下来的N行,每行一个字符串,每个字符串长度不超过1000.

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

leetcode: 5. 最长回文子串

5. 最长回文子串 题目链接https://leetcode.cn/problems/longest-palindromic-substring/ 题目描述 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2:

Flink全链路延迟的测量方式和实现原理

点击上方蓝色字体,选择“设为星标” 回复”面试“获取更多惊喜 本文已经加入「大数据成神之路PDF版」中提供下载。你可以关注公众号,后台回复:「PDF」 即可获取。 一、背景 Flink Job端到端延迟是一个重要的指标,用来衡量Flink任务的整体性能和响应延迟(大部分流式应用,要求低延迟特性)。 通过流处理引擎竞品对比,我们发现大部分流计算引擎产品,都在告警监控页面,集成了全链路时延指标

dispatch_after 的延迟执行分析

dispcth_after 是将block 中的任务延迟添加到它将要执行的队列中去,而并不一定添加到队列中就立即会去执行任务。 图中表示是在5秒中后将任务添加到主队列中,如果主队列中还有另外的任务假设A、B 要执行,那么这个任务会在任务A、B 执行完后才会开始执行。 验证的代码如下: dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int