1079 延迟的回文数(20 分)

给定一个 k+1 位的正整数 N,写成 a​k​​⋯a​1​​a​0​​ 的形式,其中对所有 i 有 0≤a​i​​<10 且 a​k​​>0。N 被称为一个回文数,当且仅当对所有 i 有 a​i​​=a​k−i​​。零也被定义为一个回文数。

非回文数也可以通过一系列操作变出回文数。首先将该数字逆转,再将逆转数与该数相加,如果和还不是一个回文数,就重复这个逆转再相加的操作,直到一个回文数出现。如果一个非回文数可以变出回文数,就称这个数为延迟的回文数。(定义翻译自 https://en.wikipedia.org/wiki/Palindromic_number )

给定任意一个正整数,本题要求你找到其变出的那个回文数。

输入格式:

输入在一行中给出一个不超过1000位的正整数。

输出格式:

对给定的整数,一行一行输出其变出回文数的过程。每行格式如下

A + B = C

其中 A 是原始的数字,B 是 A 的逆转数,C 是它们的和。A 从输入的整数开始。重复操作直到 C 在 10 步以内变成回文数,这时在一行中输出 C is a palindromic number.;或者如果 10 步都没能得到回文数,最后就在一行中输出 Not found in 10 iterations.

输入样例 1:

97152

输出样例 1:

97152 + 25179 = 122331
122331 + 133221 = 255552
255552 is a palindromic number.

输入样例 2:

196

输出样例 2:

196 + 691 = 887
887 + 788 = 1675
1675 + 5761 = 7436
7436 + 6347 = 13783
13783 + 38731 = 52514
52514 + 41525 = 94039
94039 + 93049 = 187088
187088 + 880781 = 1067869
1067869 + 9687601 = 10755470
10755470 + 07455701 = 18211171
Not found in 10 iterations.
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include<iostream>
#include<string> using namespace std; //判断是否为回文数
bool isPalindromicNumber(string str)
{
int rear = str.size()-; for (int i = ; i < str.size() / ; ++i)
if (str[i] != str[rear - i])
return false; return true;
} //获取逆序的数
void getReverseNumber(string &str1,char *str2)
{
int size = str1.size();
for (int i = size - ; i >= ; --i)
str2[size - i - ] = str1[i]; str2[size] = '\0';
} //获取相加之后的值并存入str1
void addValue(string &str1, char *str2)
{
int len = str1.size(); for (int i = len - ; i > ; --i)
{
if (str1[i] + str2[i] > )//str1+str2 -48 >57(9)
{
str1[i - ] += ;
str1[i] += str2[i] - ;
}
else
str1[i] += str2[i] - ;
} //处理第一位相加进位的情况
if (str1[] + str2[] > )
{
str1[] += str2[] - ;
str1.insert(str1.begin(), '');
}
else
str1[] += str2[] - ;
} int main()
{
string str1;
char str2[];
int flag = ; getline(cin,str1); while (flag--)
{
if (!isPalindromicNumber(str1))//不是回文数
{
getReverseNumber(str1, str2);
cout << str1 << " + " << str2 << " = ";
addValue(str1, str2);
cout << str1 << endl;
}
else
{
cout << str1 << " is a palindromic number." << endl;
return ;
}
} cout << "Not found in 10 iterations." << endl; return ;
}
 

PAT 乙级 1079 延迟的回文数(20 分)的更多相关文章

  1. PAT Baisc 1079 延迟的回文数 (20 分)

    给定一个 k+1 位的正整数 N,写成 a​k​​⋯a​1​​a​0​​ 的形式,其中对所有 i 有 0 且 a​k​​>0.N 被称为一个回文数,当且仅当对所有 i 有 a​i​​=a​k−i ...

  2. PAT(B) 1079 延迟的回文数(Java)

    题目链接:1079 延迟的回文数 (20 point(s)) 题目描述 给定一个 k+1 位的正整数 N,写成 a​k​​⋯a​1​​a​0​​ 的形式,其中对所有 i 有 0≤a​i​​<10 ...

  3. PAT 1079. 延迟的回文数

    PAT 1079. 延迟的回文数 给定一个 k+1 位的正整数 N,写成 ak...a1a0 的形式,其中对所有 i 有 0 <= ai < 10 且 ak > 0.N 被称为一个回 ...

  4. PAT 1079 延迟的回文数(代码+思路)

    1079 延迟的回文数(20 分) 给定一个 k+1 位的正整数 N,写成 a​k​​⋯a​1​​a​0​​ 的形式,其中对所有 i 有 0≤a​i​​<10 且 a​k​​>0.N 被称 ...

  5. 【PAT】B1079 延迟的回文数(20 分)

    用了柳婼大佬博客的思路,但实现有不同 没有用string所以要考虑字符串末尾的'\0' 用的stl中的reverse逆置字符串 #include<stdio.h> #include< ...

  6. P1079 延迟的回文数

    P1079 延迟的回文数 转跳点:

  7. PAT乙级:1087 有多少不同的值 (20分)

    PAT乙级:1087 有多少不同的值 (20分) 当自然数 n 依次取 1.2.3.--.N 时,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注:⌊x⌋ 为取整函数,表示不超过 x ...

  8. PAT (Advanced Level) Practice 1019 General Palindromic Number (20 分) (进制转换,回文数)

    A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...

  9. hdu1282回文数猜想

    Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...

随机推荐

  1. cell-augmented

    https://zhuanlan.zhihu.com/p/33147353 https://blog.csdn.net/thm225679/article/details/79689008 https ...

  2. day 020 常用模块02

    主要内容: 什么是序列化 pickle shelve json configparser(模块) 一 序列化 我们在存储数据或者网络传输数据的时候,需要对我们的对象进行处理,把对象处理成方便存储和 传 ...

  3. 软件工程 week 01

    一.安装与使用Git First项目地址: https://git.coding.net/kefei101/First.git 二.针对以下三个问题,作为大三新生,谈谈我的感想 问题1:你为什么选择计 ...

  4. nginx的安装 、Nginx默认虚拟主机、nginx用户认证、nginx 域名重定向

    1.nginx:官网:www.nginx.org 下载:wget -c  http://nginx.org/download/nginx-1.14.0.tar.gz解压:tar -zxvf nginx ...

  5. opencv学习记录

    #include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui ...

  6. SQL-学习过程-001

    1.了解什么是SQL和T-SQL 2.对数据库的对象的学习 数据库>>>数据表>>>字段>>>记录>>>视图>>&g ...

  7. eclipse项目版本控制忽略上传文件

    *.classpath *.project */.git/* .deployables .git .settings .svn _svn bin target

  8. 配置文件schema约束

    解释:https://blog.csdn.net/zh15732621679/article/details/79074380 操作:https://blog.csdn.net/lhg_55/arti ...

  9. linux(Centos7)服务器硬件改动,进入Emergency模式

    例如移走了某块硬盘后,直接开机就会进入该模式 这是因为/etc/fstab没有正确执行的原因 解决方法: 1)在该模式下输入root密码进入单用户模式(我没试过,不知道行不行,如果不行的话就用忘记ro ...

  10. wget命令的使用

    wget是在命令行下载文件的命令 -c 断点续传,用于大文件的下载或者网络不稳定的情况下,一般不写也可以 -P 指定下载到那个目录(是大写的P) 举例 [root@bogon local]# wget ...