回文对称数 多方法
作者:
WindSkyEnd
,
2024-10-30 16:30:16
,
所有人可见
,
阅读 2
//运用string字符串
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
using ll = long long int;
using namespace std;
int main()
{
int n ;
cin >> n;
for(int i = 1 ; i <= n ; i++)
{
string str;
char ch;
int temp = i;
while(temp!=0)
{
ch = temp%10+'0';//借助ch中转 存进string里 注意需要存字面值 //所以加'0'
str += ch;
temp /= 10; //退位
}
string copy_str = str;
reverse (copy_str.begin(), copy_str.end());
//字符串的翻转.begin(),.end()
if(str == copy_str) cout << i << endl; //判断
}
return 0;
}
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
using ll = long long int;
using namespace std;
int main()
{
int n ;
cin >> n;
for(int i = 1 ; i <= n ; i++)
{
string str;
char ch;
int temp = i;
while(temp!=0)
{
ch = temp%10+'0';
str += ch;
temp /= 10;
}
string copy_str = str;
for(int i = 0 ; i < str.length() ; i++)//不使用reverse的颠倒数组的方法
{
copy_str[i]=str[str.length()-i-1];//注意需要-1
}
if(str == copy_str) cout << i << endl;
}
return 0;
}
//不使用string的方法
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
using ll = long long int;
using namespace std;
int main()
{
int n ;
cin >> n;
for(int i = 1 ; i <= n ; i++)
{
int cnt = i; //位数
int rever = 0; //翻转数
while(cnt!=0) //按位数循环
{
ll temp = cnt%10; //保留最后一位
rever = rever*10 + temp; //最关键的一步 能够保证不断扩大
cnt /= 10;
}
if(i == rever) cout << i << endl ;
}
return 0;
}