题目描述
我们将这样的数字定义为 偶位回文数:
给定一个正整数 n,请你求出从小到大前 n 个偶位回文数的和是多少?
输入格式
输入共一行,一个正整数 n。
输出格式
输出前 n 个偶位回文数的和。
样例
输入数据#1
2
输出数据#1
33
解释#1
从小到大前两个偶位回文数是 11,22,和为 33。
输入数据#2
5
输出数据#2
165
解释#2
11+22+33+44+55=165
数据范围
对于 30% 的测试数据满足:1≤n≤100。
对于 60% 的测试数据满足:1≤n≤5000。
对于 100% 的测试数据满足:1≤n≤10^5
。
我的代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int sum=0;
long long xs=0;
for(int i=1;sum<=n;i++)
{
string a;
stringstream sin;
sin<<i;
sin>>a;
string b=a;
reverse(b.begin(),b.end());
if(a.size()%2==0&&b==a)
{
sum++;
if(sum<=n)
{
xs+=i;
}
}
}
cout<<xs;
}
为什么超时?