洛谷------基础 1035-级数求和 1980-计数问题

1035题目描述

已知:Sn​=1+1/2​+1/3​+…+1/n。显然对于任意一个整数 k,当 n足够大的时候,S_n>k。

现给出一个整数 k,要求计算出一个最小的 n,使得 S_n>k。

输入格式

一个正整数 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 之间用一个空格隔开。

输出格式

1 个整数,表示 x 出现的次数。

输入输出样例

输入 

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