1024.Palindromic Number

来源:互联网 发布:fc2视频域名更改 编辑:程序博客网 时间:2024/06/01 09:23
【题意】
        判断一个数是不是对称的,若不是那么将其倒过来加上自身,重复这个过程若干次,知道达到次数上限或者得到了对称的数。最后输出得到的结果和加的次数。

【思路】
        用两个字符串模拟加法的过程即可。

【注意点】
        这题和上一题(1023)有相似之处,即数可能达到的值超出了unsigned long long的表示范围,需要用string模拟加法过程

#include <iostream>#include <string>#include <cstring>#include <algorithm>using namespace std;int main(int argc, char const *argv[]){string str[2];int k,cnt;cin >> str[0] >> k;str[1] = str[0];reverse(str[1].begin(),str[1].end());cnt = 0;while(str[0]!=str[1] && cnt<k){int up = 0,index = str[0].length()-1,digit;string tmp;while(index>=0){digit = str[0][index]+str[1][index]-2*'0'+up;tmp.insert(tmp.begin(), digit%10+'0');up = digit/10;index--;}if(up){tmp.insert(tmp.begin(),up+'0');}str[0] = str[1] = tmp;reverse(str[1].begin(),str[1].end());cnt++;}cout << str[0] << endl << cnt;system("pause");return 0;}


0 0