题目描述
所谓鸢尾花数,是指一个正整数的十进制表示中,任意相邻两位的数字之差是一个常数,比如12345,8642,66666都是鸢尾花数,而88910与121不是鸢尾花数。
给定一个区间[a,b],请找出在a到b之间的所有鸢尾花数。
输入描述
单独一行:两个正整数a与b
输出描述
单独一行:表示给定区间内所有的鸢尾花数,以空格隔开。如果该区间内没有鸢尾花数,输出-1
。
输入样例
100 150
输出样例
111 123 135 147
数据描述
1≤𝑎,𝑏≤1051≤a,b≤105
思路分析
枚举即可,如:
123
1-2=-1
2-3=-1
差值相同
AC代码
#include<bits/stdc++.h>
using namespace std;
int a,b,f,fen[10];//数组分离
int main(){
cin>>a>>b;
for(int i=a;i<=b;i++){
memset(fen,0,sizeof fen);//清空
int t=i,len=0;
while(t!=0){//数位分离
fen[++len]=t%10;
t/=10;
}
int x=fen[2]-fen[1],flag=1;
for(int i=1;i<len;i++){
if(fen[i+1]-fen[i]!=x){
flag=0;
break;
}
}
if(flag){//标记
cout<<i<<" ";
f=1;
}
}
if(!f) cout<<-1;//标记
return 0;
}