ToB企服应用市场:ToB评测及商务社交产业平台
标题:
2022蓝桥杯B组
[打印本页]
作者:
慢吞云雾缓吐愁
时间:
2023-7-11 19:44
标题:
2022蓝桥杯B组
2022蓝桥杯b组
A题
import java.math.BigInteger;
public class A {
public static void main(String[] args) {
BigInteger bigInteger=new BigInteger("20");//高精度
BigInteger a=new BigInteger("1");
for (int i = 0; i < 22; i++) {
a=a.multiply(bigInteger);//multiply是java中乘的意思
}
BigInteger c=new BigInteger("7");
a=a.remainder(c);//remainder取余
System.out.println(a);
}
}
复制代码
这道题的重点在于利用java中得天独厚的高精度BigInteger直接生成20,然后22遍遍历得到结果,题目简单易上手
B
问题描述
这天小明正在学数数。他突然发现有些正整数的形状像一座“山”,比如 123565321、145541,它们左右对称(回文)且数位上的数字先单调不减,后单调不增。小明数了很久也没有数完,他想让你告诉他在区间 [2022, 2022222022] 中有多少个数的形状像一座“山”。
public class B3 {
public static void main(String[] args) {
//记录满足条件的个数
int count = 0;
for (int i = 2022; i <= 2022222022; i++) {
//int -> String
String s = i + "";
//String -> char[]
char[] t = s.toCharArray();
if (pdhws(t)) {
if (pdsw(t)) {
System.out.println(t);
count++;
}
}
}
System.out.println(count);
}
/**
* 判断是否是回文数
*
* @param t
* @return
*/
public static boolean pdhws(char[] t) {
boolean flag = true;
int mid = t.length / 2;
for (int j = 0; j < mid; j++) {
if (t[j] == t[t.length - j - 1]) {
flag = true;
} else {
flag = false;
return flag;
}
}
return flag;
}
/**
* 是否是先单调不减,后单调不增
*
* @param t
* @return
*/
public static boolean pdsw(char[] t) {
boolean flag = true;
int mid = t.length / 2;
for (int j = 0; j < mid; j++) {
if (t[j] <= t[j + 1]) {//因为取一半,所以只需要判断单调不减或单调不增就可以
flag = true;
} else {
flag = false;
return flag;
}
}
return flag;
}
}
复制代码
这道题的思路在于,首先通过S读入字符,然后通过java中的格式,将其转化为字符数组
建立一个新数组,由于java中字符能直接加减的形式,进行计算
'A'-'B'=1
arr
++;数组内值增加
最后就是(char)("A"+i) ('A'+i)是数字形式,直接转字符
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4