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