正经题解|N - 8进制回文数
2026-04-06 15:58:05
发布于:河北
0阅读
0回复
0点赞
废话少说,上代码
#include<iostream>
#include<algorithm>
using namespace std;
// 判断字符串是否为回文串的函数
bool isPalindrome(const string& s){
// 设置双指针,一个指向开头,一个指向结尾
int left=0,right=s.length()-1;
// 当左指针小于右指针时继续循环
while(left<right){
// 如果左右指针对应的字符不相等,则不是回文串
if(s[left]!=s[right]) return false;
// 左指针向右移动,右指针向左移动
left++;
right--;
}
// 如果循环结束仍未返回false,说明是回文串
return true;
}
// 将十进制数转换为八进制字符串的函数
string toOctal(int n){
// 特殊情况:如果输入为0,直接返回"0"
if(n==0) return "0";
// 初始化结果字符串为空
string result="";
// 当n大于0时继续循环
while(n>0){
// 将n除以8的余数转换为字符,并添加到结果字符串的开头
result=char('0'+n%8)+result;
// 将n整除8
n/=8;
}
// 返回八进制字符串
return result;
}
int main(){
// 取消cin与stdio的同步,提高输入输出效率
ios::sync_with_stdio(false);
// 解除cin与cout的绑定关系
cin.tie(nullptr);
// 解除cout与cerr的绑定关系
cout.tie(nullptr);
// 定义变量N存储输入的数字,初始化为0
int N=0;
// 读取输入的数字
cin>>N;
// 将十进制数N转换为八进制字符串
string octal=toOctal(N);
// 判断八进制字符串是否为回文串,如果是输出YES,否则输出NO
if(isPalindrome(octal)) cout<<"YES";
else cout<<"NO";
// 程序正常结束
return 0;
}
这里空空如也








有帮助,赞一个