洛谷------基础 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);
    }

}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值