专栏文章
题解:B4276 [蓝桥杯青少年组国赛 2023] 八进制回文平方数
B4276题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mipoq15x
- 此快照首次捕获于
- 2025/12/03 15:27 3 个月前
- 此快照最后确认于
- 2025/12/03 15:27 3 个月前
思路
60 分
我们可以写一个函数
check,判断这个数的八进制是否回文且这个数是否是平方数。但不难发现: 的数据显然是抗不下来的,一定会 TLE。正解(100 分)
由于我们需要缩小时间复杂度,因此我们可以直接在 for 循环里就设成 了,就直接去判断每个平方数的八进制是否回文,减少了许多不必要的损失。
代码
CPP#include <bits/stdc++.h>
using namespace std;
inline bool check(int x){
bool f=0;
vector<int> v;
while(x){
v.push_back(x%8);
x/=8;
}
string s="";
for(int i=v.size()-1;i>=0;i--){
s.push_back(v[i]+'0');
}
string res=s;
reverse(res.begin(),res.end());
f=(res==s);
return f;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr),cout.tie(NULL);
int N;
cin>>N;
for(int i=1;i*i<=N;i++){
if(check(i*i)){
cout<<i*i<<' ';
}
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...