第十一届蓝桥杯模拟赛——数位递增的数

【问题描述】

一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,

例如 1135 是一个数位递增的数,而 1024 不是一个数位递增的数。

给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?

【输入格式】
输入的第一行包含一个整数 n。

【输出格式】
输出一行包含一个整数,表示答案。

【样例输入】

30

【样例输出】

26

【评测用例规模与约定】
对于 40% 的评测用例,1 ≤ n ≤ 1000
对于 80% 的评测用例,1 ≤ n ≤ 105
对于所有评测用例,1 ≤ n ≤ 106


题解:

#include 
using namespace std;

bool judge(int x)
{
	int temp = 9;
	do
	{
		int t = x % 10;
		if(t > temp) return false;
		x /= 10;
		temp = t;
		
	}while(x);
	
	return true;
}

int main()
{
	int n;
	cin >> n;
	
	int ans = 0;
	for (int i = 1; i <= n; i ++)
	{
		if(judge(i)) ans ++;
	}
	
	cout << ans << endl;
	return 0;
}

你可能感兴趣的:(蓝桥杯历届试题)