第十四届蓝桥杯三月真题刷题训练——第 2 天

目录

题目1:奇数倍数

代码: 

题目2:求值

代码:

题目3:求和

代码:

题目4:数位排序

代码:


题目1:奇数倍数

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

请你找到最小的整数 XX 同时满足:

  1. XX 是 20192019 的整倍数;
  2. XX 的每一位数字都是奇数。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码: 

package 第十四届蓝桥杯三月真题刷题训练.第二天;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

/**
 * @author yx
 * @date 2023-03-05 13:09
 */
public class 奇数倍数 {
    static PrintWriter out =new PrintWriter(System.out);
    static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer in=new StreamTokenizer(ins);
    /**
     * 输入
     * in.nextToken()
     * int a= (int)in.nval;
     *
     * 输出
     * out.print();
     * out.flush();
     */

    public static void main(String[] args) {
        int i=1;
        while (true){
            int n=2019*i;
            if(isJiShu(n)){
                System.out.println(n);
                break;
            }
            i++;
        }
    }
    static boolean isJiShu(int n){
        int temp=0;
        while (n!=0){
            temp=n%10;
            if(temp%2==0){
                return false;
            }
            n/=10;
        }
        return true;
    }

}

题目2:求值

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

学习了约数后,小明对于约数很好奇,他发现,给定一个正整数 tt,总是可以找到含有 tt 个约数的整数。小明对于含有 tt 个约数的最小数非常感兴趣,并把它定义为 StSt​ 。

例如 S1=1,S2=2,S3=4,S4=6,⋅⋅⋅S1​=1,S2​=2,S3​=4,S4​=6,⋅⋅⋅ 。

现在小明想知道,当 t=100t=100 时,StSt​ 是多少?即 S100S100​ 是多少?

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

代码:

package 第十四届蓝桥杯三月真题刷题训练.第二天;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.HashSet;

/**
 * @author yx
 * @date 2023-03-05 13:38
 */
public class 求值 {
    static PrintWriter out =new PrintWriter(System.out);
    static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer in=new StreamTokenizer(ins);
    /**
     * 输入
     * in.nextToken()
     * int a= (int)in.nval;
     *
     * 输出
     * out.print();
     * out.flush();
     */
    public static void main(String[] args) {
        int i=1;
        while (true){
            if(numberOfZhiYinZi(i)==100){
                System.out.println(i);
                break;
            }
            i++;
        }
    }
    static int numberOfZhiYinZi(int n){
        HashSet<Integer> set=new HashSet<>();
        for (int i = 1; i <= Math.sqrt(n); i++) {
            if(n%i==0){
                set.add(i);
                set.add(n/i);
            }
        }
        return set.size();
    }

}

题目3:求和

问题描述

给定 nn 个整数 a1,a2,⋅⋅⋅,ana1​,a2​,⋅⋅⋅,an​ ,求它们两两相乘再相加的和,即:

S=a1⋅a2+a1⋅a3+⋯+a1⋅an+a2⋅a3+⋯+an−2⋅an−1+an−2⋅an+an−1⋅anS=a1​⋅a2​+a1​⋅a3​+⋯+a1​⋅an​+a2​⋅a3​+⋯+an−2​⋅an−1​+an−2​⋅an​+an−1​⋅an​

输入格式

输入的第一行包含一个整数 nn。

第二行包含 nn 个整数 a1,a2,⋯ ,ana1​,a2​,⋯,an​。

输出格式

输出一个整数 SS,表示所求的和。请使用合适的数据类型进行运算。

样例输入

4
1 3 6 9

样例输出

117

评测用例规模与约定

对于 30%30% 的数据,1≤n≤1000,1≤ai≤100 。

对于所有评测用例, 1≤n≤200000,1≤ai≤1000 。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

代码:

package 第十四届蓝桥杯三月真题刷题训练.第二天;

import java.io.*;
import java.util.ArrayList;

/**
 * @author yx
 * @date 2023-03-05 13:57
 */
public class 求和 {
    static PrintWriter out =new PrintWriter(System.out);
    static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer in=new StreamTokenizer(ins);
    /**
     * 输入
     * in.nextToken()
     * int a= (int)in.nval;
     *
     * 输出
     * out.print();
     * out.flush();
     */
    public static void main(String[] args) throws IOException {
        in.nextToken();
        int n=(int) in.nval;
        ArrayList<Integer> list=new ArrayList<>();
        long sum=0;
        long ans=0;
        for (int i = 0; i < n; i++) {
            in.nextToken();
            int temp=(int)in.nval;
            list.add(temp);
            sum += temp;
        }
        for (int i = 0; i < n; i++) {
            ans+=(sum-list.get(i))*list.get(i);
            sum-=list.get(i);
        }
        out.println(ans);
        out.flush();
    }
}

题目4:数位排序

问题描述

小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。

例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位 之和 13 。

又如, 6 排在 2022 前面, 因为它们的数位之和相同, 而 6 小于 2022 。

给定正整数 n,m, 请问对 1 到 n 采用这种方法排序时, 排在第 m 个的元 素是多少?

输入格式

输入第一行包含一个正整数 nn 。

第二行包含一个正整数 mm 。

输出格式

输出一行包含一个整数, 表示答案。

样例输入

13
5

样例输出

3

样例说明

1 到 13 的排序为: 1,10,2,11,3,12,4,13,5,6,7,8,9。第 5 个数为 3 。

评测用例规模与约定

对于 30%的评测用例, 1≤m≤n≤300 。

对于 50% 的评测用例, 1≤m≤n≤1000 。

对于所有评测用例, 1≤m≤n≤1000000 。

运行限制

  • 最大运行时间:3s
  • 最大运行内存: 512M

代码:

package 第十四届蓝桥杯三月真题刷题训练.第二天;

import java.io.*;
import java.lang.reflect.AnnotatedArrayType;
import java.util.ArrayList;
import java.util.Collections;

/**
 * @author yx
 * @date 2023-03-05 14:08
 */
public class 数位排序 {
    static PrintWriter out =new PrintWriter(System.out);
    static BufferedReader ins=new BufferedReader(new InputStreamReader(System.in));
    static StreamTokenizer in=new StreamTokenizer(ins);
    /**
     * 输入
     * in.nextToken()
     * int a= (int)in.nval;
     *
     * 输出
     * out.print();
     * out.flush();
     */

    static class Node implements Comparable<Node>{
        int sumOfShuWei=0;
        int number=0;
        Node(int number){
            this.number=number;
            this.sumOfShuWei=ShuWei(this.number);
        }
        int ShuWei(int n){
            int sum=0;
            int temp=0;
            while (n!=0){
                temp=n%10;
                sum+=temp;
                n/=10;
            }
            return sum;
        }
        //(总分降序排列)
        //如果左边的this大于o,则返回-1,不调换位置
        //如果左边的this小于o,则返回1,调换位置
        @Override
        public int compareTo(Node o) {
            //左边大于右边调换位置,小的排在前面
            if(this.sumOfShuWei>o.sumOfShuWei){
                return 1;
            }else if(this.sumOfShuWei==o.sumOfShuWei){
                if(this.number>o.number){
                    return 1;
                }else {
                    return -1;
                }
            }else {
                return -1;
            }
        }
    }
    public static void main(String[] args) throws IOException {
        in.nextToken();
        int n=(int) in.nval;
        in.nextToken();
        int m=(int) in.nval;
        ArrayList<Node>list=new ArrayList<>();
        for (int i = 1; i <= n; i++) {
            Node node=new Node(i);
            list.add(node);
        }
        Collections.sort(list);
        out.print(list.get(m-1).number);
        out.flush();
    }
}

 

 

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小羊不会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值