1079 延迟的回文数 string + 模拟加法
题解大数加法回文数比较容易出来,利用reverse函数麻烦的是怎么把两个string加起来我看这题是大数加法的升级版,不过大数加法也不难两个字符串还是利用大数加法的过程,只是在相加的时候要先把加的两个字符转为数字相加,然后在变成字符放到答案里Code#include <iostream>#include <algorithm>using namespace std;int
·
题解
大数加法 |
---|
回文数比较容易出来,利用reverse函数 |
麻烦的是怎么把两个string加起来 |
我看这题是大数加法的升级版,不过大数加法也不难 |
两个字符串还是利用大数加法的过程,只是在相加的时候要先把加的两个字符转为数字相加,然后在变成字符放到答案里 |
Code
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
string s;
cin >> s;
int N = 0;
while (N < 10)
{
// st串和s串相加
string st = s;
reverse(s.begin(), s.end());
int r = 0;
// 反转后的如果和原来的相等 那么就是回文数
bool f = (s == st);
if (f)
{
cout << st << " is a palindromic number.";
break;
}
int len = s.size();
string a;
// 模拟加法
for (int i = 0; i < len; i++)
{
// 先得到两个数字的和
int x = ((s[i] - '0') + (st[i] - '0') + r);
// 把模方答案里
a.push_back((x % 10) + '0');
// r是进位,初始为0
r = x / 10;
}
if (r != 0)
a.push_back(r + '0');
// 注意a现在是反着的,要先反过去
reverse(a.begin(), a.end());
cout << st << " + " << s << " = " << a << endl;
s = a;
N++;
}
if (N == 10)
cout << "Not found in 10 iterations.";
return 0;
}
更多推荐
所有评论(0)