目錄
🔍簡單介紹一下藍橋杯
🔍大賽流程
🔍大賽解疑
🚩第十屆藍橋杯真題
試題 A: 組隊🎈
試題 B: 不同子串🎈
題目C:數列求值🎈
試題 D: 數的分解🎈
試題 F: 特別數的和🎈
🔍簡單介紹一下藍橋杯
🌴全國軟體專業人才設計與創業大賽,又名“藍橋杯”大賽,是工業和資訊化部人才交流中心舉辦的年度賽事,
🌴全國1200余所高校參賽,累計參賽人數超過40萬人
🌴對大學生綜合評測,獎學金評定,升學考研都有一定益處,
🌴軟體組分為 C/C++ 組和 Java 組,以考察選手演算法設計和程式設計能力為主,

🔍大賽流程

省賽
省賽每個組別設定一、二、三等獎,原則上各獎項的比例為10%、20%、30%,獲獎比例僅作為參考,組委會專家組將根據賽題難易程度及整體答題情況,制定獲獎最低分數線,未達到獲獎最低分數線者不得獎,
?劃重點:省賽一等獎選手獲得直接進入全國總決賽資格,所有獲獎選手均可獲得由工業和資訊化部人才交流中心及大賽組委會聯合頒發的獲獎證書,(心動不如行動吧!)

🔍大賽解疑
很多同學對于藍橋杯的報名猶豫不決,害怕自己拿不了獎.....,有這些想法的同學要注意了!
📒首先,看到上面的獲獎比例,我相信大家會發現藍橋杯的獲獎竟然高達60%!!!大約每兩位參賽選手中就會誕生一位獲獎選手,所以大家一定要有自信心,總有人會拿獎,那個人為什么不用可以是我?
📒其次,就拿個人賽軟體類來說,賽道分為研究生組,大學A組(重點本科組),大學B組(普通本科組),大學C組(高職高專組),身為B組的我們看到這兒,你還會害怕被大神碾壓而煩惱嗎?(當然,也不排除一些“流落民間”的神仙)
📒最后,大家也不用擔心自己沒學過高級演算法怎么辦,有做過藍橋杯真題的小伙伴會發現,官方爸爸們總會出幾道水題,來給大伙們送福利,下面我從第十屆藍橋杯真題中篩選了一些題目,現在來帶大家一起來看看
🚩第十屆藍橋杯真題
試題 A: 組隊🎈
本題總分:5 分
【問題描述】
作為籃球隊教練,你需要從以下名單中選出 1 號位至 5 號位各一名球員, 組成球隊的首發陣容, 每位球員擔任 1 號位至 5 號位時的評分如下表所示,請你計算首發陣容 1 號位至 5 號位的評分之和最大可能是多少?

答案:490
?劃重點:歷年真題中的第一題幾乎都是送分題,大伙兒可要拿穩了!!!
試題 B: 不同子串🎈
本題總分:5 分
【問題描述】
一個字串的非空子串是指字串中長度至少為 1 的連續的一段字符組成 的串,例如,字串aaab 有非空子串a, b, aa, ab, aaa, aab, aaab,一共 7 個, 注意在計算時,只算本質不同的串的個數, 請問,字串0100110001010001 有多少個不同的非空子串?
【答案提交】
這是一道結果填空的題,你只需要算出結果后提交即可,本題的結果為一 個整數,在提交答案時只填寫這個整數,填寫多余的內容將無法得分
class D_2{
/**
* 不同子串
*/
void method() {
Set<String> sub = new HashSet<String>();
String target="0100110001010001";
for(int i=1;i<=target.length();i++){
for(int j=0;j<i;j++){
sub.add(target.substring(j,i));
}
}
System.out.println(sub.size());
}
}
答案:100
這個題目對大家的基本功可能有一點點要求:
1、首先要知道用Set集合自動去重
2、還要知道用substring(),把字串內部進行拆分并組合
題目C:數列求值🎈
本題總分:10 分
【問題描述】
給定數列 1, 1, 1, 3, 5, 9, 17, …,從第 4 項開始,每項都是前 3 項的和,求 第 20190324 項的最后 4 位數字,
【答案提交】
這是一道結果填空的題,你只需要算出結果后提交即可,本題的結果為一 個 4 位整數(提示:答案的千位不為 0),在提交答案時只填寫這個整數,填寫 多余的內容將無法得分,
class D_3{
/**
* 數列求值
* 1.給定一個數列1,1,1,3,5,9,17,.....從第4項開始
* 2.每項都是前3項的和
* 求第20190324項的最后4位數字
*/
int m;
public int method(){
int []a=new int[20190324];
a[0]=1;
a[1]=1;
a[2]=1;
for(int i=3;i<20190324;i++){
/**算出來856830691
* 成功入坑
*(有答案提示千位不為零)
*/
// 開始離譜,沒有想到int型別的最大數值范圍,加到后面會發生溢位
// a[i]=a[i-1]+a[i-2]+a[i-3]
/**
* 模10000后算出正確答案4659
*/
a[i]=(a[i-1]+a[i-2]+a[i-3])%10000;//雖然是暴解,但也需要有一定的思考(%10000很關鍵)
}
m=a[20190323];
return m;
}
}
答案: 4659
劃重點:(答案的千位不為 0)
雖然題目很簡單,直接暴解就完事兒 了,但也需要有一定的思考,考察的更多的是同學們是否細心,
🎉🎉🎉🎉🎉如果前三道題都做對了,那恭喜你,省三基本上拿捏了 🎉🎉🎉🎉🎉🎉
試題 D: 數的分解🎈
本題總分:10 分
【問題描述】
把 2019 分解成 3 個各不相同的正整數之和,并且要求每個正整數都不包 含數字 2 和 4,一共有多少種不同的分解方法? 注意交換 3 個整數的順序被視為同一種方法,例如 1000+1001+18 和 1001+1000+18 被視為同一種,
【答案提交】
這是一道結果填空的題,你只需要算出結果后提交即可,本題的結果為一 個整數,在提交答案時只填寫這個整數,填寫多余的內容將無法得分,
class D_4{
/**
* 數的分解
* 1.把2019分解成”3個各不相同的正整數(不包含0)“之和
* 2.并且要求每個正整數都不包含數字2和4
* 一共有多少種不同的分解方法
* 3.注意交換3個整數的順序被視為同一種方法
* 例:1000+1001+18和1001+1000+18都是同一種
* (這個地方可已通過人為規定它們之間的大小來解決比如說 a<b<c,避免出現重復計算)
* 答案40785
*/
boolean check(int number){//來篩選每個數字里面都不包含數字2和4
for (;number!=0;) {
if (number % 10 == 2 || number % 10 == 4) {//判斷條件用||只要滿足一個條件就執行false
return false;
} else number /= 10;
}
return true;
}
int method(){
int n=2019;
int i=0;
for(int a=1;a<n;a++ ){
for (int b=a+1;n-a-b>b&&b<n;b++){//這個地方n-a-b=c,c要大于b
if(check(a)&&check(b)&&check(n-a-b)){
i++;
}
}
}
return i;
}
}
答案:40785
這個題目沒啥特別的地方,思路非常簡單,一開始就先自己設定好c>b>a就完事兒了,然后在寫一個判斷數字中是否包含2和4的子函式,然后兩重回圈直接暴力解就完事兒了!
試題 F: 特別數的和🎈
時間限制: 1.0s 記憶體限制: 512.0MB 本題總分:15 分
【問題描述】
小明對數位中含有 2、0、1、9 的數字很感興趣(不包括前導 0),在 1 到 40 中這樣的數包括 1、2、9、10 至 32、39 和 40,共 28 個,他們的和是 574, 請問,在 1 到 n 中,所有這樣的數的和是多少?
【輸入格式】
輸入一行包含兩個整數 n,
【輸出格式】
輸出一行,包含一個整數,表示滿足條件的數的和,
【樣例輸入】 40
【樣例輸出】 574
【評測用例規模與約定】 對于 20% 的評測用例,1≤n≤10, 對于 50% 的評測用例,1≤n≤100, 對于 80% 的評測用例,1≤n≤1000, 對于所有評測用例,1≤n≤10000,
class D_6{
/**
* 特別數的和
*/
//思路:先將整型資料轉換成字串型別,然后用indexOf找字串中是否包含“2”,“0”,“1”,“9”
/**涉及到的知識點
//public int indexOf(int ch):
// String.indexOf()回傳的值是int型別
// 表示指定字符在字串中第一次出現處的索引(下標從0開始時)
(這個地方也可以寫一個check函式跟上面題目的check函式類似)
// 如果此字串中沒有這樣的字符,則回傳 -1
//String s=Integer.toString(int i)
//就是將i轉為string
**/
int method(){
Scanner in = new Scanner(System.in);
int m=0;
int n=in.nextInt();//輸入整數
for (int i=1;i<=n;i++){
String s=Integer.toString(i);
//String型別有一個方法:contains(),該方法是判斷字串中是否有子字串,如果有則回傳true,如果沒有則回傳false
if(s.contains("2")||s.contains("1")||s.contains("0")||s.contains("9")){
m+=i;
}
}
return m;
}
}
這個題目的思路也非常簡單,把int型別的數字轉換成字串,然后用一個String的contains()方法來判斷是否包含2、0、1、9,有則把該int型別數值加上,
🎉🎉🎉🎉如果前面這些題都做對了,那恭喜你,省二穩了,省一可以沖一下 🎉🎉🎉🎉🎉

🍀最后總結一下:
看完這些,是不是感覺自己又可以了呀,博主寫這篇博客的目的不是說給藍橋杯打廣告,也不是說純粹為了寫題解,而是希望能夠給那些還在猶豫報名藍橋杯的小伙伴一點鼓勵和信心,
🍀最后把我很喜歡的一句話送給大家:
你不笨然后你愿意去努力,你就一定會有識訓的!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/387962.html
標籤:其他

