题目:
题意解析:
对于给出的在 l,r 范围的数,求出将数分解之后最大数和最小数的差距最大的值,结果可能会有多个,输出其中一个就行了。
题解:
(1)这个题目就是遍历一遍范围中的数,然后输出结果就行了。但是要注意的一点是,可能会出现时间超限的可能。
(2)这里要处理一下,最大值与最小值的差值最大是9,如果输入的范围很大的话,一定会出现差值为9的情况,这里判断一下,跳出循环就行了。还有就是设置比较的初始值的时候,最好是设置成负数。
代码:
#include<bits/stdc++.h>
using namespace std;
long long int t,n,m;
int difference(long long int k){
int minn=10,maxx=0;
while(k>0){
int l=k%10;
minn=min(minn,l);
maxx=max(maxx,l);
k/=10;
}
return maxx-minn;
}
int main() {
cin>>t;
while(t--) {
cin>>n>>m;
long long int k=-1,l;
for(long long int i=m;i>=n;i--){
int shu = difference(i);
if(k<shu){
k=shu;
l=i;
if(shu==9){
break;
}
}
}
cout<<l<<endl;
}
return 0;
}