【問題描述】
一個正整數如果任何一個數位不大於右邊相鄰的數位,則稱爲一個數位遞增的數,例如1135是一個數位遞增的數,而1024不是一個數位遞增的數。
給定正整數 n,請問在整數 1 至 n 中有多少個數位遞增的數? 【輸入格式】 輸入的第一行包含一個整數 n。 【輸出格式】
輸出一行包含一個整數,表示答案。 【樣例輸入】 30 【樣例輸出】 26 【評測用例規模與約定】 對於 40% 的評測用例,1 <= n
<= 1000。 對於 80% 的評測用例,1 <= n <= 100000。 對於所有評測用例,1 <= n <= 1000000。
AC代碼:
#include<bits/stdc++.h>
using namespace std;
int main(){
int num, sum = 0;
scanf("%d", &num);
for(int i=1; i<=num; i++){
char str[8];
int flag = 1; //標誌位, 爲 1 時
sprintf(str, "%d", i);
for(int j=1; j<strlen(str); j++){
if(str[j-1] > str[j]){
flag = 0; // 存在逆序,flag 爲0
break;
}
}
if(flag){ // 符合要求,sum + 1
sum++;
}
}
printf("%d", sum);
return 0;
}