トピック
【問題点】
正の整数のいずれかの桁が右側の隣接する桁以下の場合、それを増数と呼びます。たとえば、1135は増数、1024は増数ではありません。
正の整数nが与えられた場合、整数1からnの間で何桁が増加していますか?
【入力形式】入力
の1行目に整数nが含まれています。
【出力形式】
出力行には、回答を示す整数が含まれています。
[サンプル入力]
30
[サンプル出力]
26
[評価ユースケースのスケールと規則]
評価ユースケースの40%について、1 <= n <= 1000。
テストケースの80%で、1 <= n <= 100000。
すべての測定ケースで、1 <= n <= 1000000。
問題解決のアイデア
個人的な謙虚な意見:私はそれを書いたときに再帰を考えていなかったので、問題を解決するときに、判断のために数値をcharタイプの配列に変換しました。(個人的には、再帰よりも理解しやすいはずだと思います)
予防
1から9は判断を必要としません
回答
n = 1000:219
n = 100000:2001
n = 1000000:5004
コード
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
int count=0;
for(int i=1;i<=n;i++){
if(f(i)){
//调用f
count++;
}
}
System.out.println(count);
}
public static boolean f(int i){
if(i<10){
//1到9不需要进行判断
return true;
}else{
char []s =(i+"").toCharArray();//转换为char数组
for(int j=0;j<s.length-1;j++){
//判断
if(s[j]>s[j+1]){
return false;
}
}
}
return true;
}
}