栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

1024. Palindromic Number (25)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1024. Palindromic Number (25)

1024. Palindromic Number (25) 题目大意

给定一个数字,和允许翻转后相加的次数cnt,求要多少次才能变成一个回文数字,输出那个回文数字和翻转相加了多少次,如果本身就是回文数字就输出0次,如果超过给定的次数cnt了,就输出那个不是回文的结果,并且输出给定的次数cnt。

基本思路

用字符串完成大整数的相加操作。
可以通过对字符串翻转后比较来判断是否为回文串。

代码
#include 
using namespace std;
 string s;//适中作为每次循环的初始串
void add(string t){
    int carry=0;//进位
    //大整数运算
    for (int i = 0; i < t.length(); ++i) {
//         cout<'9'){
            s[i]=s[i]-10;
            carry=1;
        }
    }
    //考虑最高位的进位
    if(carry==1) s=s+'1';
    //反转最后的结果
    reverse(s.begin(),s.end());
}
 int main(){
     int cnt,i;//允许反转的次数,当前是第几次反转(从0开始)
     cin>>s>>cnt;
     //进行反转操作
     for (i = 0; i < cnt; ++i) {
         string t=s;
         reverse(t.begin(),t.end());
         //如果s已经是回文串或者反转的次数用尽,退出
         if(s==t||i==cnt) break;
         //进行大整数相加的操作
         add(t);
     }
     //输出
     cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/714526.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号