蓝桥杯省赛模拟-数位递增的数

第五题 数位递增的数
题目

【问题描述】
一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。
给定正整数 n,请问在整数 1 至 n 中有多少个数位递增的数?
【输入格式】
输入的第一行包含一个整数 n。
【输出格式】
输出一行包含一个整数,表示答案。
【样例输入】
30
【样例输出】
26
【评测用例规模与约定】
对于 40% 的评测用例,1 <= n <= 1000。
对于 80% 的评测用例,1 <= n <= 100000。
对于所有评测用例,1 <= n <= 1000000。

#include 
#include 
using namespace std;
void i2s(int num,string &str){
	stringstream ss;
	ss<<num;
	ss>>str;
}
int main(){
	int ans=0;
	for(int i=1;i<=30;++i){
		bool flag=true;
		string s;
		i2s(i,s);
		for(int j=0;j<s.length()-1;++j){
			if(s[j]>s[j+1]){//比较ASCII值 
				flag=false;
			}
		}
		if(flag){
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}

你可能感兴趣的:(C++蓝桥杯真题解析-B组)