题目描述
所谓鸢尾花数,是指一个正整数的十进制表示中,任意相邻两位的数字之差是一个常数,比如12345,8642,66666都是鸢尾花数,而88910与121不是鸢尾花数。
给定一个区间[a,b],请找出在a到b之间的所有鸢尾花数。
输入描述
单独一行:两个正整数a与b
输出描述
单独一行:表示给定区间内所有的鸢尾花数,以空格隔开。如果该区间内没有鸢尾花数,输出-1
。
输入样例
100 150
输出样例
111 123 135 147
数据描述
1≤a,b≤1051≤a,b≤105
#include<iostream>
using namespace std;
long long a[1000005],n,m,sum;
bool fun(int n){
int cnt=0;
while(n){
a[++cnt]=n%10;
n/=10;
}
int l=a[1]-a[2];
for(int i=3;i<=cnt;i++){
if(a[i-1]-a[i]!=l) return 0;
}
return 1;
}
int main(){
bool f=0;
cin>>n>>m;
for(int i=n;i<=m;i++){
if(fun(i)){
f=1;
cout<<i<<" ";
}
}
if(!f) cout<<"-1";
return 0;
}