问题描述
一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。
给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
输入格式
输入的第一行包含一个整数 n。
输出格式
输出一行包含一个整数,表示答案。
样例输入
30
样例输出
26
评测用例规模与约定
对于 40% 的评测用例,1 <= n <= 1000。
对于 80% 的评测用例,1 <= n <= 100000。
对于所有评测用例,1 <= n <= 1000000。
#include<iostream>
#include<string>
using namespace std;
int fun (int n) {
if (n < 10)
return n;
int a = n%10;
int b = fun(n/10);
if (b == -1)
return -1;
if (b > a) // x
return -1;
else
return a;
}
int main ()
{
int n;
int sum = 0;
cin >> n;
for (int i = 1; i <= n; i++ ) {
if (fun(i) >= 0)
sum ++;
}
cout << sum;
return 0;
}