题目链接:1079 延迟的回文数 (20 point(s))

题目描述

给定一个 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.

测试样例

Case 0:

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

Case 1:

196
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.

Case 2:

10
10 + 01 = 11
11 is a palindromic number.

Case 3:

11
11 is a palindromic number.

Java代码

/**********************************************************************************
Submit Time Status Score Problem Compiler Run Time User
8/19/2019, 17:36:23 Accepted 20 1079 Java (openjdk) 77 ms wowpH
**********************************************************************************/
import java.io.BufferedReader;
import java.io.InputStreamReader; public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder C = new StringBuilder(br.readLine()); // 输入的正整数
StringBuilder D = new StringBuilder(C).reverse(); // 反转后的数
int times = 0; // 操作次数
// 当C不是回文数且操作未超过10次,那么继续反转相加
while (!C.toString().contentEquals(D) && (++times) <= 10) {
StringBuilder A = new StringBuilder(C);
StringBuilder B = new StringBuilder(A).reverse(); // 反转后的A
D = new StringBuilder(A.length() + 1); // A+B的和(左边低位右边高位)
int carry = 0; // 进位
for (int i = 0; i < A.length(); ++i) {
int sum = (A.charAt(i) - 48) + (B.charAt(i) - 48) + carry;// 和
carry = sum / 10; // 新的进位
D.append((char) (sum % 10 + 48)); // 添加到和的右边
}
if (carry > 0) { // 有进位
D.append(carry); // 添加到和的右边
}
C = new StringBuilder(D).reverse(); // A+B的和(左边高位右边低位)
System.out.print(A.append(" + ").toString());
System.out.print(B.append(" = ").toString());
System.out.println(C.toString());
}
if (times > 10) { // 超过10次,未找到
System.out.println("Not found in 10 iterations.");
} else { // 未超过10次,延迟回文数
System.out.println(C.toString() + " is a palindromic number.");
}
}
}

提交结果

PAT(B) 1079 延迟的回文数(Java)的更多相关文章

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

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

  2. 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 ...

  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 (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 ...

  8. hdu1282回文数猜想

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

  9. C语言 · 特殊回文数

    问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输 ...

随机推荐

  1. VsCode插件与Node.js交互通信

    首先关于VsCode插件通信,如果不明白的可以参考我的这篇博客VsCode插件开发之插件初步通信 如果需要详细例子的话,可以参考VsCode插件开发 现在又有一个新的需求是,VsCode插件可以通过j ...

  2. De1ctf - shell shell shell记录

    虽然是N1CTF原题,但是自己没遇见过,还是做的题少,记录一下吧== 1.源码泄露,直接可以下到所有源码,然后代码审计到一处insert型注入: 这里直接带入insert里面,跟进去看看 insert ...

  3. ubuntu之路——day5(今天看了浅层神经网络的数学推导过程)

    1.初始化 2.前向传播 导数比较好理解 3.反向传播 全符号积分的推导看得我头有点晕 最后唤起我依稀的线代回忆 感谢吴恩达老师的反向传播讲解,第一遍看的有点晕,然后仔细看了一下又找了个B站的推导就懂 ...

  4. spring boot + vue 前后分离实现登录功能(三)

    Spring boot 后台 github 地址 SpringBoot-book-vue-demo 使用tk.mytabis 简化mybatis 开发 使用 durid 连接池 连接Mysql pom ...

  5. 【软工实践】团队项目Snug-选题报告

    组长博客链接 组长博客 NABCD分析引用 NEED 需求 根据我们的调查显示,大部分人都有着不规律的生活习惯,他们都希望有一款软件能够帮助他们,养成一个适合自己的较规律的生活习惯.我们的Snug正是 ...

  6. Vue学习手记09-mock与axios拦截的使用

    01.安装 安装mock npm install mockjs 安装axios npm install axios 02.新建一个config.js文件做axios拦截 import axios fr ...

  7. lnmp一键安装包 多PHP版本使用教程

    ./install.sh mphp 多PHP版本只支持LNMP模式,LNMPA.LAMP模式下不支持!要使用多PHP先安装多PHP版本,在lnmp1.4源码目录下运行:./install.sh mph ...

  8. windows中kill端口为8080的进程(或子进程)

    1.netstat -aon|findstr "8080" 查出8080端口被9436进程占用 2.查看PID对应的进程 tasklist|findstr "9436&q ...

  9. 蓝牙BLE: GATT Profile 简介(GATT 与 GAP)

    一. 引言 现在低功耗蓝牙(BLE)连接都是建立在 GATT (Generic Attribute Profile) 协议之上.GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范,这些很 ...

  10. 积神经网络(CNN)的参数优化方法

    http://www.cnblogs.com/bonelee/p/8528863.html 积神经网络的参数优化方法——调整网络结构是关键!!!你只需不停增加层,直到测试误差不再减少. 积神经网络(C ...