这道题观察完数据范围我们不难发现,暴力是很简单就写出来的
期望分:30分
复杂度:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
const long long M = 1e12;
bool nb(string s)
{
for(int i = 0;i < s.size()/2-1;i ++)
{
if(s[i] != s[i+s.size()/2]) return false;
}
return true;
}
int main()
{
int cnt = 0;
int n;cin >>n;
for(int i = 10;i <= n;i ++)
{
string op = to_string(i);
if(nb(op)) cnt++;
}
cout <<9;
return 0;
}
接下来要得满分就得稍微思考一下子,我们不妨换一种思路既然我们是去求以内有多少个满足要求的数,那我们不用去遍历,直接构造一个符合要求的数
期望分:100
复杂度:
核心代码:
for(int i = 1;i<=1e6;i++)
{
string s = to_string(a[i]);
s += s;
if(stoll(s) <= n)
ans++;
else
break;
}