??藍橋杯系列文章
2023第十四屆藍橋杯校內(nèi)模擬賽第三期個人題解(Java實現(xiàn))
藍橋杯真題——單詞分析(Java實現(xiàn))
??前言
這篇文章為個人題解,假如我寫的解法有誤,歡迎大家在評論區(qū)指正?????。?!希望這篇文章對你有幫助??
??填空題
??問題1:大于 2022 的最小數(shù)
請找到一個大于 2022 的最小數(shù),這個數(shù)轉(zhuǎn)換成二進制之后,最低的 6 個二進制為全為 0 。
請將這個數(shù)的十進制形式作為答案提交。
??Java代碼
public static void main(String[] args) {
int flag=0;
for(int i=2023;;i++){
String str=Integer.toBinaryString(i); //轉(zhuǎn)換為二進制
if(str.length()>=6) { //二進制長度大于6才繼續(xù)
String substr = str.substring(str.length() - 6); //取出最后6 個二進制位
if(substr.equals("000000")) {
System.out.println(i);
break;
}
}
}
}
結(jié)果:
2048
??問題2:時間間隔
計算1949年10月1日至2022年1月1日間隔的天數(shù)
直接用電腦自帶計算器:
??問題3:進制轉(zhuǎn)換
8518 是一個非常特殊的數(shù),如果把這個數(shù)看成 16 進制數(shù),它的值為 (8518)16=8161616+51616+116+8=34072,而 34072 正好是 8518 的整數(shù)倍。
9558 也是這樣一個數(shù),當看成 16 進制時是 38232。其實長度為 1 的數(shù) 0 到 9 都滿足看成 16 進制后是自己的整數(shù)倍(1倍)。
請問,除開長度為 1 的數(shù),最小的滿足這樣條件的數(shù)是多少?
??Java代碼
public static void main(String[] args) {
for(int i=10;;i++){
int num=Integer.valueOf(Integer.toString(i),16);//將數(shù)值看作16進制數(shù),將其轉(zhuǎn)為10進制
if(num%i==0) {
System.out.println(i);
break;
}
}
}
??結(jié)果:
1038
??問題4:最長路徑
從矩陣第一行第一列出發(fā),只能水平往右走或者豎直往下走,求所走折線的數(shù)字之和的最大值。
??問題5:2022最多能拆分為多少個質(zhì)數(shù)之和
2022能拆分為多個質(zhì)數(shù)之和,請問最多能拆分為多少個?
??Java代碼
public class h5 {
// 判斷數(shù)字是否為質(zhì)數(shù)
public static boolean iszhishu(int n){
for(int i=2;i<n;i++){
if(n%i==0)
return false;
}
return true;
}
public static void main(String[] args) {
int sum=2; //記錄質(zhì)數(shù)之和
int count=1; //記錄質(zhì)數(shù)的個數(shù)
for(int i=3;i<2022;i++){
if(iszhishu(i)) {
sum += i;
count++;
}
if(sum>=2022) { //看>=2022最近的數(shù)是哪個
System.out.println("質(zhì)數(shù)之和:"+sum);
System.out.println("當前數(shù)字:"+i);
System.out.println("質(zhì)數(shù)個數(shù):"+count);
break;
}
}
}
}
??結(jié)果:
質(zhì)數(shù)之和:2127
當前數(shù)字:139
質(zhì)數(shù)個數(shù):34
和為2127時質(zhì)數(shù)個數(shù)為34,所以僅需剔除5這個質(zhì)數(shù),就可以得到2022,因此答案為34-1=33個。
??編程題:
??問題6:拷貝文件
小藍正在拷貝一份文件,他現(xiàn)在已經(jīng)拷貝了 t 秒時間,已經(jīng)拷貝了 c 字節(jié),文件總共有 s 字節(jié), 如果拷貝是勻速進行的,請問小藍大概還需要拷貝多少秒?
輸入格式
輸入一行包含三個整數(shù) t, c, s,相鄰兩個整數(shù)之間用一個空格分隔。
輸出格式
輸出一個整數(shù),表示答案。數(shù)據(jù)保證答案正好是整數(shù)。
樣例輸入
3 10 20
樣例輸出
3
樣例輸入
30 14 21
樣例輸出
15
??Java代碼
public class h6 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int t=sc.nextInt(); //已經(jīng)拷貝了 t 秒時間
int c=sc.nextInt(); //已經(jīng)拷貝了 c 字節(jié)
int s=sc.nextInt(); //文件總共有 s 字節(jié)
double speed=c/(double)t; //計算拷貝速度,記得轉(zhuǎn)換為double
int ans=(int)Math.round((s-c)/speed); //結(jié)果四舍五入
System.out.println(ans);
}
}
??結(jié)果:
3 10 20
3
30 14 21
15
30 14 22
17
??問題7:去除重復(fù)單詞
小藍有 n 個單詞,但是單詞中有一些是重復(fù)的,請幫小藍去除重復(fù)的單詞。
輸入格式
輸入第一行包含一個正整數(shù) n ,表示小藍的單詞數(shù)量。接下來 n 行,每行包含一個由小寫字母組成的單詞。
輸出格式
請輸出去除重復(fù)后的那些單詞。如果一個單詞出現(xiàn)了多遍,請保留第一次出現(xiàn)的單詞,去除之后出現(xiàn)的單詞,按輸入的順序輸出。
樣例輸入
lanqiao
hi
hello
hello
lanqiao
樣例輸出
lanqiao
hi
hello
??Java代碼
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Scanner;
public class h7 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String[] s=new String[n];
for(int i=0;i<n;i++)
s[i]=sc.next();
ArrayList<String> list1=new ArrayList<>(Arrays.asList(s));
LinkedHashSet<String> hashSet=new LinkedHashSet<>(list1); //集合自動去重
ArrayList<String> list2=new ArrayList<>(hashSet);
for(String str:list2)
System.out.println(str);
}
}
??結(jié)果:
8
lanqiao
lanqiao
hi
lanqiao
hello
hello
hello
hi
lanqiao
hi
hello
??問題8:補充回文串
一個字符串如果從左向右讀和從右向左讀相同,則稱為一個回文串,例如 lanqiaoaiqnal 是一個回文串。小藍有一個字符串,請將這個字符串右邊加上一些字符,使其成為一個回文串。如果有多種方案,請輸出最短的回文串。
輸入格式
輸入一行包含一個字符串,由小寫英文字母組成。
輸出格式
輸出一行包含答案。
樣例輸入
lanqiao`
樣例輸出
lanqiaoaiqnal`
樣例輸入
banana`
樣例輸出bananab
樣例輸入java noon
樣例輸出java noon
??Java代碼
public class h8 {
//判斷是否是回文串
public static boolean ishuiwen(String s){
int n=s.length();
int l=0,r=n-1;
while(l<r){
if(s.charAt(l)==s.charAt(r)){
l++;
r--;
}
else
return false;
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
StringBuilder sb = new StringBuilder(s);
if (ishuiwen(s))
System.out.println(s);
else {
int l = 0, r = s.length() - 1; //左右雙指針
while (l < r) {
if (sb.charAt(l) != sb.charAt(r)) {
sb.insert(r + 1, sb.charAt(l)); //左右指針字符不對應(yīng),就插入
} else
r--;
l++;
}
System.out.println(sb.toString());
}
}
}
??結(jié)果
banana
bananab
lanqiao
lanqiaoaiqnal
noon
noon
??問題9:X圖形個數(shù)
給定一個字母矩陣。一個 X 圖形由中心點和由中心點向四個45度斜線方向引出的直線段組成,四條線段的長度相同,而且四條線段上的字母和中心點的字母相同。
一個 X圖形可以使用三個整數(shù) r, c, L 來描述,其中 r, c 表示中心點位于第 r 行第 c 列,正整數(shù) L 表示引出的直線段的長度。 對于 1 到 L 之間的每個整數(shù) i,X圖形滿足:第 r-i 行第 c-i 列與第 r 行第 c 列相同,第 r-i 行第 c+i 列與第 r 行第 c 列相同,第 r+i 行第 c-i 列與第 r 行第 c 列相同,第 r+i 行第 c+i 列與第 r 行第 c 列相同。
例如,對于下面的字母矩陣中,所有的字母 L 組成一個 X圖形,其中中間的 5 個 L 也組成一個 X圖形。所有字母 Q 組成了一個 X圖形。
LAAALA
ALQLQA
AALQAA
ALQLQA
LAAALA
給定一個字母矩陣,請求其中有多少個 X圖形。
輸入格式
輸入第一行包含兩個整數(shù) n, m,分別表示字母矩陣的行數(shù)和列數(shù)。
接下來 n 行,每行 m 個大寫字母,為給定的矩陣。
輸出格式
輸出一行,包含一個整數(shù),表示答案。
樣例輸入
5 6
LAAALA
ALQLQA
AALQAA
ALQLQA
LAAALA
樣例輸出
3
??Java代碼
public class h9 {
//public static void show(char[][] a){
// int n=a.length;
// for(int i=0;i<a.length;i++){
// for(int j=0;j<a[0].length;j++)
// System.out.print(a[i][j]+" ");
// System.out.println();
// }
//}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
String[] s=new String[n];
char[][] ch=new char[n][m];
for(int i=0;i<n;i++)
s[i]=sc.next();
for(int i=0;i<n;i++){
for(int j=0;j<m;j++)
ch[i][j]=s[i].charAt(j);
}
//show(ch);
int count=0; //記錄所有X圖形個數(shù)
for(int i=1;i<n-1;i++){
for(int j=1;j<m-1;j++){
int zs=0,zx=0,ys=0,yx=0; //記錄每個字母左上左下右上右下分別有多少個和中心字母相同
// 左上角
for(int k=1;k<=Math.min(i,j);k++) {
if (ch[i][j] != ch[i - k][j - k])
break;
zs++;
}
// 左下角
for(int k=1;k<=Math.min(n-i-1,j);k++) {
if (ch[i][j] != ch[i+k][j-k])
break;
zx++;
}
// 右上角
for(int k=1;k<=Math.min(i,m-j-1);k++) {
if (ch[i][j] != ch[i-k][j+k])
break ;
ys++;
}
// 右下角
for(int k=1;k<=Math.min(n-i-1,m-j-1);k++) {
if (ch[i][j] != ch[i+k][j+k])
break;
yx++;
}
int min=(min=(min=(zs<zx)?zs:zx)<ys?min:ys)<yx?min:yx; //求出四個中的最小值,即該字母可以構(gòu)成多少個X圖形
count+=min; //累計所有X圖形個數(shù)
}
}
System.out.println(count);
}
}
??結(jié)果
5 6
LAAALA
ALQLQA
AALQAA
ALQLQA
LAAALA
3
5 11
AAAAALQAALQ
AAAAAALQLQA
AAAAAAALQAA
AAAAAALQLQA
AAAAALQAALQ
15
??總結(jié)
自己做的,菜鳥一枚,可能有不少錯漏之處,請大家指正。臨走之前,可以給個免費的點贊評論收藏+關(guān)注嗎?????你的支持是我創(chuàng)作的最大動力!??!文章來源:http://www.zghlxwxcb.cn/news/detail-421940.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-421940.html
到了這里,關(guān)于2023第十四屆藍橋杯模擬賽第二期個人題解(Java實現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!