Content
输入一个数 \(n\),输出第 \(n\) 个偶数位回文数。
数据范围:\(1\leqslant n\leqslant 10^{10^5}\)。
Solution
一看这吓人的数据范围,我就明白,这题明显是个结论题。
我们需要先找规律:
第一个:\(11\)
第二个:\(22\)
第三个:\(33\)
第四个:\(44\)
\(…\)
第十个:\(1001\)
第十一个:\(1111\)
\(…\)
嗯?那么第 \(n\) 个岂不是先输出 \(n\),再倒序输出 \(n\)?
为什么呢?
因为这就是回文数的性质啊。
因为不管你是多少位数,将其正序输出再倒序输出后总会符合回文数的性质并且是偶数位。
所以直接输出就好了。
Code
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
using namespace std;string s;int main() {
cin >> s;
cout << s;
for(int i = s.size() - 1; i >= 0; --i)printf("%c", s[i]);
}