洛谷 - 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)\)

相关推荐
2401_8414956412 天前
【Python高级编程】Python中常见的运算符、函数与方法总结
字符串·集合·文件·列表·元组·字典·运算符
2401_8414956412 天前
【Python高级编程】Python 核心语法速查演示
python·字符串·集合·列表·元组·字典·运算符
Irene199115 天前
JavaScript 字符串和数组方法总结(默写版:同9则6 Str21 Arr27)
javascript·字符串·数组·方法总结
課代表16 天前
bat 批处理脚本中的字符串
字符串·脚本·命令行·bat·批处理·字符串截取·延迟变量
SunkingYang16 天前
Qt中QString 查找子串的完整指南
qt·字符串·qstring·子字符串·查找子串
Tisfy19 天前
LeetCode 960.删列造序 III:动态规划(最长递增子序列)
算法·leetcode·动态规划·字符串·题解·逆向思维
Tisfy20 天前
LeetCode 955.删列造序 II:模拟(O(mn)) + 提前退出
算法·leetcode·字符串·题解·遍历
oscar99924 天前
CSP-J教程——第一阶段第九、十课:数组与字符串
字符串·数组·csp-j
埃伊蟹黄面25 天前
字符串算法精要与例题汇编
c++·算法·leetcode·字符串
好评1241 个月前
C++ 字符串:始于 char*,终于深拷贝
开发语言·c++·stl·字符串