洛谷 - B4276 [蓝桥杯青少年组国赛 2023] 八进制回文平方数 - 题解

题目传送门

主要思路

首先,这道题范围在 \(10^9\),我们不可能直接从 \(1\) 循环到 \(N\)。我们不难看出,这道题是求平方数的八进制是否回文,那些不是平方数的例如 \(2\) 呀,\(3\) 呀这些都是不用考虑的。我们循环也只用从 \(1\) 到 \(\left\lfloor\sqrt{n}\right\rfloor\) 就可以了。这样,时间复杂度就大大降低了。其余部分就没什么好说的了,详见代码。

AC 代码:

cpp 复制代码
#include<iostream>
using namespace std;
string l0z8(int n){
    string s;
    while(n){
        s=char(n%8+48)+s;
        n/=8;
    }
    return s;
}
bool isHw(int n){
    string s=l0z8(n);
    int l=0,r=s.size()-1;
    while(l<=r){
        if(s[l]!=s[r])return 0;
        l++,r--;
    }
    return 1;
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i*i<=n;i++){
        if(isHw(i*i)){
            cout<<i*i<<' ';
        }
    }
    return 0;
}

代码时间复杂度:\(\mathcal O\left(4\times\log_88\times\left\lfloor\sqrt{n}\right\rfloor\right)\)

相关推荐
Tisfy1 天前
LeetCode 2434.使用机器人打印字典序最小的字符串:贪心(栈)——清晰题解
leetcode·机器人·字符串·题解·贪心·
WebGoC开发者7 天前
C++题解(34) 2025年顺德区中小学生程序设计展示活动(初中组C++)U560289 字符串排序(一)和 U560136 字符串排(二)题解
c++·经验分享·青少年编程·字符串·比赛复盘
理论最高的吻9 天前
1614. 括号的最大嵌套深度【 力扣(LeetCode) 】
c++·算法·leetcode·职场和发展·字符串··字符匹配
理论最高的吻11 天前
HJ25 数据分类处理【牛客网】
c++·算法·字符串·牛客网·字符匹配
执子手 吹散苍茫茫烟波13 天前
leetcode438.找到字符串中所有字母异位词
java·leetcode·字符串
蟹至之23 天前
万字解析:Java字符串
java·字符串·stringbuilder·string·stringbuffer
Jasmine_llq24 天前
《P4391 [BalticOI 2009] Radio Transmission 无线传输 题解》
算法·字符串·substr
Ydoc7701 个月前
后缀自动机的构建和应用
字符串·sam
大家都说我身材好1 个月前
如何优化字符串替换:四种实现方案对比与性能分析
java·字符串
carpell2 个月前
【双指针法】:这么常用的你怎么能不知道
python·链表·字符串·数组·双指针法