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

相关推荐
无心水2 天前
【Python实战进阶】5、Python字符串终极指南:从基础到高性能处理的完整秘籍
开发语言·网络·python·字符串·unicode·python实战进阶·python工业化实战进阶
課代表20 天前
VB.Net 常用函数
字符串·类型转换·数组·函数·vb.net·日期时间·条件
2401_8414956420 天前
【数据结构】基于BF算法的树种病毒检测
java·数据结构·c++·python·算法·字符串·模式匹配
胡西风_foxww1 个月前
git 添加除了包含特定字符串的文件
git·字符串·文件·add·添加·特定·包含
爱学习的小鱼gogo1 个月前
python 单词搜索(回溯-矩阵-字符串-中等)含源码(二十)
开发语言·数据结构·python·矩阵·字符串·回溯·递归栈
顾晨阳——1 个月前
C/C++字符串
c语言·c++·字符串
希赛网2 个月前
软考软件设计师常考知识点:(三)数据结构
数据结构·二叉树·字符串·软考·软件设计师·线性表
老侯(Old monkey)2 个月前
C语言:将字符串逆序存放
c语言·字符串·函数调用
徐子童2 个月前
优选算法---字符串
java·算法·字符串·笔试·高精度相乘
程序员-King.2 个月前
day86——有效的字母异位词(LeetCode-242)
算法·字符串