鸢尾花数

题目描述

所谓鸢尾花数,是指一个正整数的十进制表示中,任意相邻两位的数字之差是一个常数,比如12345,8642,66666都是鸢尾花数,而88910与121不是鸢尾花数。

给定一个区间[a,b],请找出在a到b之间的所有鸢尾花数。

输入描述

单独一行:两个正整数a与b

输出描述

单独一行:表示给定区间内所有的鸢尾花数,以空格隔开。如果该区间内没有鸢尾花数,输出-1

输入样例

 
  1. 100 150

输出样例

 
  1. 111 123 135 147

数据描述

1≤𝑎,𝑏≤1051≤a,b≤10​5​​

思路分析

枚举即可,如:

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;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值