目录
题目1:奇数倍数
代码:
题目2:求值
代码:
题目3:求和
代码:
题目4:数位排序
代码:
题目1:奇数倍数
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
请你找到最小的整数 XX 同时满足:
- XX 是 20192019 的整倍数;
- 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();
}
}