您的位置:首页 > 其它

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

2020-05-05 11:37 344 查看

【问题描述】

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

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

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

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

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

【样例输入】

30

【样例输出】

26

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

题解:

#include <iostream>
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: