藍橋模擬題——數位遞增的數

【問題描述】
一個正整數如果任何一個數位不大於右邊相鄰的數位,則稱爲一個數位遞增的數,例如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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章