当前位置: 首页 > news >正文

PAT甲级-1024 Palindromic Number

题目

题目大意

一个非回文数,加上它的翻转数所得的和,进行k次,有可能会得到一个回文数。给出一个数n,限制相加次数为k次,如果小于k次就得到回文数,那么输出该回文数和相加的次数;如果进行k次还没有得到回文数,那么输出最后的结果和k值。

思路

10的10次方,按照最坏情况考虑,乘以100,为10的20次方,超过了long long的范围,所以是大数加法题目。要用字符串来表示数字。由于是加法运算,不管哪两个数相加都最多进1位,因此可以用isadd来表示是否需要进位。注意计算首位加法,如果进位,就跳出了for循环,所以要再循环外放一个isadd的if语句,如果进位,res再加‘1’。

代码

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;int main(){string s;int k;cin >> s >> k;for (int i = 0; i < k; i++){string s2 = s;reverse(s2.begin(), s2.end());if (s == s2){cout << s << endl;cout << i << endl;return 0;}string res = "";bool isadd = false;for (int i = (int)s.size() - 1; i >= 0; i--){if (isadd){res += ((s[i] - '0') + (s2[i] - '0') + 1) % 10 + '0';  // 先加1,后取余if ((s[i] - '0') + (s2[i] - '0') + 1 >= 10){isadd = true;}else{isadd = false;}}else{res += ((s[i] - '0') + (s2[i] - '0')) % 10 + '0';if ((s[i] - '0') + (s2[i] - '0') >= 10){isadd = true;}else{isadd = false;}}}if (isadd) res += '1';reverse(res.begin(), res.end());s = res;}cout << s << endl;cout << k << endl;return 0;
}

http://www.lryc.cn/news/526843.html

相关文章:

  • FS8405 Release FS0B
  • IGBT的损耗计算的学习【2025/1/24】
  • Unity|小游戏复刻|见缝插针1(C#)
  • No.1|Godot|俄罗斯方块复刻|棋盘和初始方块的设置
  • SSM框架探秘:Spring 整合 SpringMVC 框架
  • 2025.1.20——二、buuctf BUU UPLOAD COURSE 1 1 文件上传
  • 【架构面试】三、高可用高性能架构设计
  • 11.渲染管线——光栅化阶段
  • 【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)
  • 二叉树的深度
  • MySQL命令及用法(精华版)
  • R语言学习笔记之高效数据操作
  • 将 OneLake 数据索引到 Elasticsearch - 第二部分
  • Linux——冯 • 诺依曼体系结构
  • Java进阶(一)
  • appium自动化环境搭建
  • Qt 5.14.2 学习记录 —— 이십 QFile和多线程
  • 積分方程與簡單的泛函分析7.希爾伯特-施密特定理
  • 使用vitepress搭建自己的博客项目
  • 开始步入达梦中级dba
  • 如何在docker中的mysql容器内执行命令与执行SQL文件
  • S4 HANA更改Tax base Amount的字段控制
  • Linux权限有关
  • 【github 使用相关】提交pr和commit message Conventional Commits 规范 代码提交的描述该写什么?
  • Docker—搭建Harbor和阿里云私有仓库
  • Maven的下载安装配置
  • Rust:高性能与安全并行的编程语言
  • matlab的cat()函数详解(OK)
  • 将个人微信中的时间改成标准的日期时间格式
  • centos9编译安装opensips 二【进阶篇-定制目录+模块】推荐