Luogu-----基礎 1035 - シリーズ 1980 のまとめ - 計数問題

1035 トピックの説明

既知: Sn = 1+1/2 +1/3 +…+1/n。明らかに、任意の整数 k について、n が十分に大きい場合、S_n>k になります。

整数 k が与えられた場合、S_n>k となる最小 n を計算する必要があります。

入力フォーマット

正の整数 k。

出力フォーマット

正の整数 n。

入力サンプルと出力サンプル

入力

1

出力

2

指示/ヒント

【データ範囲】

データの 100% については、1≤k≤15 です。

 

分析します:

正の整数 K を入力してください

S_n = 1+ 1/2 + 1/3 +...+1/n;

S_n>K になるように    

正の整数 n を出力します


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        double sum=1;

        int k = sc.nextInt();

        for (int i = 2; i <= 9999999 ; i++) {
            sum+=(double)1/i;

            if(sum>k){
                System.out.println(i);
                break;
            }

        }

    }
}

 

 

1980年 タイトル 説明

1 から n までのすべての整数の中に数字 x が何回現れるかを数えてみてください。たとえば、1 から 11 まで、つまり 1,2,3,4,5,6,7,8,9,10,11 では、11 という数字が 4 回出現します。

入力フォーマット

2 つの整数 n と x はスペースで区切られます。

出力フォーマット

x の出現数を表す 1 つの整数。

入力サンプルと出力サンプル

入力 

11 1

出力 

4

指示/ヒント

データの 100\%100% の場合、1≤n≤10^6

 

分析します:

ここで、一桁の値を判定するには、各判定の余りを判定すればよい。

  y=i;
            while(y>0){                 if(y%10==x) {                     sum++;                 y                 /=10;             }





import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int sum=0;
        int y;

        int n = sc.nextInt();
        int x = sc.nextInt();

        for (int i = 1; i <=n ; i++) {
            y=i;
            while(y>0){
                if(y%10==x) {
                    sum++;
                }
                y/=10;
            }

        }
        System.out.println(sum);
    }

}

 

 

おすすめ

転載: blog.csdn.net/weixin_64428129/article/details/128216807