题目:
小b有一个非负整数
N
,她想请你找出 ≤N≤N 的最大整数x,满足x各个位数上的数字是不降的。也就是说,设x的十进制表示为 a1,a2,…,ama1,a2,…,am,则对于任意 1≤i<m1≤i<m,ai≤ai+1ai≤ai+1。收起
输入
输入一个非负整数N。 0≤N≤10^9输出
输出一个整数,表示答案输入样例
332输出样例
299
题目大意:
一个数的各个位上的数从左向右如果是不减的,那么称它为不减数,求1-n内最大的不减数。
解题思路:
从n向1遍历,判断。
实现代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int Judge(long long x){
int k1,k2;
if(x<10)return 1;
while(x>=10){
k1=x%10;
k2=(x%100)/10;
//cout<<" k2="<<k1<<" k1="<<k1<<endl;
if(k1<k2) return 0;
x/=10;
}
return 1;
}
int main(){
int n,ans=0;
scanf("%d",&n);
for(long long i=n;i>=1;i--){
int judge=Judge(i);
if(judge==1){
printf("%lld\n",i);
return 0;
}
}
}
//cout<<" judge(i)="<<judge<<endl;