蓝桥杯练习——特殊回文数
问题描述
123321是一个回文数。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。
**思路:**判断数位和必须拆分各位,判断是否回文可根据各位不断乘10加余,看新数与旧数是否相同
#include<iostream>
using namespace std;
int main(){
int num;
cin>>num;
for(int i=10000;i<=999999;i++){
int n=i;
int yushu,sum=0,m=0;
while(n){
yushu=n%10;
sum+=yushu; //这两句求各数位的和
m=m*10+n%10;
n/=10; //这两句将数位反转
}
if(m==i && sum==num){ //是回文数并且数位和为num,输出
cout<<i<<endl;
}
}
return 0;
}
练习:判断任意字符串/数字是否回文
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
string str;
getline(cin,str); //读入一行字符串
string str1=str;
reverse(str.begin(),str.end()); //将字符串反转
if(str1==str){ //判断两串是否相等
cout<<"yes";
}
else{
cout<<"no";
}
return 0;
}