# 蓝桥杯31天真题冲刺|题解报告|第二天

27 篇文章 0 订阅

## 一、奇数倍数

1.X 是 2019 的整倍数；

2.X 的每一位数字都是奇数。

package 蓝桥杯31天真题冲刺.Day2;

import java.io.*;

/**
* @author snippet
* @data 2023-03-04
* 奇数倍数-蓝桥云课
*/
public class T1 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));

static int x;// x表示要求的数

public static void main(String[] args) throws IOException {
for (int i = 1; i <= 100; i++) {
boolean flag = false;// 如果这个数和所有位数都是奇数则为true
if (((i * 2019) & 1) == 1) {
int k = i * 2019;
flag = true;
while (k > 0) {
int t = k % 10;
k /= 10;
if ((t & 1) == 0) flag = false;
}
}
if (flag) {
x = i * 2019;
break;
}
}
pw.println(x);
pw.flush();
br.close();
}
}


## 二、求值

package 蓝桥杯31天真题冲刺.Day2;

import java.io.*;
import java.util.HashSet;

/**
* @author snippet
* @data 2023-03-05
* 求值-蓝桥云课
*/
public class T2 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));

static HashSet<Integer> set = new HashSet<>();// set集合用来存这个数所有的约数
static int t,ans;// t表示这个数的约数个数 ans表示这个数的值

static void check() {
for (int i = 1; i <= 1000000; i++) {
set = new HashSet<>();
for (int j = 1; j <= i; j++) {
if (i % j == 0) {
set.add(j);
}
}
if (set.size() == t) {
ans = i;
return;
}
}
}

public static void main(String[] args) throws IOException {
t = 100;
check();
pw.println(ans);
pw.flush();
br.close();
}
}


## 三、求和

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

package 蓝桥杯31天真题冲刺.Day2;

import java.io.*;

/**
* @author snippet
* @data 2023-03-05
* 求和-蓝桥云课
*/
// 前缀和
public class T3 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));

static int n;// n表示数据的个数
static long ans;// ans表示和值
static long[] arr = new long[200200];// 一维数组arr存给定数组数据
static long[] f = new long[200200];;// 一维数组f存该数与该数前面所有数之和

public static void main(String[] args) throws IOException {
String[] s = br.readLine().split(" ");
n = Integer.parseInt(s[0]);
s = br.readLine().split(" ");

// 数组数据存入 和 求前缀和
for (int i = 1; i <= n; i++) {
arr[i] = Integer.parseInt(s[i-1]);
f[i] += f[i-1] + arr[i];
}

for (int i = 2; i <= n; i++) {
ans += f[i-1] * arr[i];
}
pw.println(ans);
pw.flush();
br.close();
}
}


## 四、数位排序

1.如果两个数的数位和不同时，按数位和大小，从小到大进行排序；

2.如果两个数的数位和相同时，则按照它原来的数的大小，从小到大进行排序；

package 蓝桥杯31天真题冲刺.Day2;

import java.io.*;
import java.util.Arrays;
import java.util.Comparator;

/**
* @author snippet
* @data 2023-03-05
* 数位排序-蓝桥云课
*/
// 重排序
public class T4 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));

static int n,m;// n表示有n个数 m表示数位排序后要求的排在第m位的数
static Integer[] arr;// 一维数组arr存1-n所有数

// 求每个数的数位和
static int check(int k) {
int temp = 0;
while (k != 0) {
temp += k % 10;
k /= 10;
}
return temp;
}

public static void main(String[] args) throws IOException {
String[] s = br.readLine().split(" ");
n = Integer.parseInt(s[0]);
s = br.readLine().split(" ");
m = Integer.parseInt(s[0]);

arr = new Integer[n];

for (int i = 0; i < n; i++) {
arr[i] = i+1;
}

// 重写排序
Arrays.sort(arr, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int a = check(o1);
int b = check(o2);
if (a == b) return o1-o2;
return a-b;
}
});

pw.println(arr[m-1]);
pw.flush();
br.close();
}
}

• 0
点赞
• 0
收藏
觉得还不错? 一键收藏
• 打赏
• 0
评论
06-08
02-15
11-12
05-15
10-07

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

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

Snippet~

¥2 ¥4 ¥6 ¥10 ¥20

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