1024. Palindromic Number (25)

1024. Palindromic Number (25),第1张

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<					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5711173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存