版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2021年藍橋杯省賽JavaB組真題解析 距離藍橋杯省賽還有1個多,為了拿到更好地成績,讓我們刷起來。 :填空題 1. ASC 已知寫字母 A 的 ASCII 碼為 65,請問寫字母 L 的 ASCII 碼是多少? 分析:簽到題。看到這題的時候會想,這題咋這么簡單,直接計算就,都不需要寫程序。實際上,在藍橋杯省賽中,填空題的前兩題和編 程題的第題都是簽到題,較簡單。但同時,這也是我們要想盡辦法拿下來的題,因此定要細,細,再細。同時,我建議簡單 的題也最好是編程解決或者計算器計算,畢竟考試的時候緊張的話還是有可能算錯最基本的運算的。 import Scanner; 需package / 2: /
2、 1: 類名必須Main,不可修改 public class Main public static void main(String args) System.out.println(int)L); 輸出答案: 76 注意:填空題只需要填最后的答案即可,因此可采取所有得到答案的法。暴+合理利具。 2. 卡 藍有很多數(shù)字卡,每張卡上都是數(shù)字 0 到 9。 藍準備這些卡來拼些數(shù),他想從 1 開始拼出正整數(shù),每拼個, 就保 存起來,卡就不能來拼其它數(shù)了。 藍想知道能從 1 拼到多少。 例如,當藍有 30張卡,其中 0 到 9 各 3 張,則藍 可以拼出 1 到 10, 但是拼 11 時卡 1 已經(jīng)只
3、有張了,不夠拼出 11。 現(xiàn)在藍有 0到 9的卡各 2021 張,共 20210 張,請問藍可以從 11拼到多少? 提:建議使計算機編程解決問題 分析:從1開始遍歷,判斷遍歷到的數(shù)可否前的卡拼出來,可以的話,繼續(xù)遍歷,否則輸出答案(答案為現(xiàn)在遍歷到的數(shù)減1)。 import *; / 1:需package / 2:類名必須Main, 不可修改 public class Main public static void main(String args) Scanner scan = new Scanner(System.in); /在此輸您的代碼. int arr = new int10; Ar
4、rays.fill(arr, 2021); for(int i = 1;i+) int temp = i; while(temp 0) int r = temp % 10; if(arrr 0) arrr-; else break; temp /= 10; if(temp 0) System.out.println(i - 1); break; scan.close(); 輸出答案: 3181 對于這道題,如果想要驗證得到的答案是否正確的話??梢孕薷南鲁绦?,主動輸個n,n表有0到9的卡各n張,然后輸3, 如果輸出的是10,則意味著的計算是正確的。 3. 直線 在平直坐標系中,兩點可以確定條直線
5、。如果有多點在條直線上, 那么這些點中任意兩點確定的直線是同條。 給定平上 2 3 個整點 (x,y)|0 x 2,0 y 3, x Z,y Z,即橫坐標 是 0 到 1 (包含 0 和 1) 之間的整數(shù)、縱坐標是 0 到 2 (包含 0 和 2) 之間的整數(shù) 的點。這些點共確定了 11 條不同的直線。 給定平上 20 21 個整點 (x,y)|0 x 20,0 y 21, x Z,y Z,即橫 坐標是 0 到 19 (包含 0 和 19) 之間的整數(shù)、縱坐標是 0 到 20 (包含 0 和 20) 之 間的整數(shù)的點。請問這些點共確定了多少條不同的直線。 分析:枚舉兩個不同的點,兩點確定條直線
6、。具體的,直線由y=kx+b表,看有多少種(k,b)的組合。但由于k和b都是浮點數(shù),Java 中是不能夠通過=直接判斷兩個浮點數(shù)是否相等的,為此我們(b2 - b1) / (a2 - a1) (b1 * (a2 - a1) - a1 * (b2 - b1) / (a2 - a1)字 符串的形式表根直線。然后通過Set集合去重,定義的類需要通過重寫equals法和hashCode()法才能被Set集合去重。 import *; public class Main public static void main(String args) Set ans = new HashSet(); for(i
7、nt a1 = 0; a1 = 19; a1+) for(int b1 = 0; b1 = 20; b1+) for(int a2 = 0; a2 = 19; a2+) for(int b2 = 0; b2 = 20; b2+) / 斜率不存在和斜率為0的特殊情況,我們可以動計算需特殊判斷 if(a1 = a2 | b1 = b2) continue; / 以分/分母的形式表達斜率k和截距b時,分和分母需要是最簡的形式 StringBuilder sb = new StringBuilder(); int up = b2 - b1; int down = a2 - a1; int r = gc
8、d(up, down); sb.append(up / r + ); sb.append(down / r + ); up = b1 * down - a1 * up; r = gcd(up, down); sb.append(up / r + ); sb.append(down / r); ans.add(sb.toString(); / 斜率不存在的直線20根,斜率為0的直線21根 System.out.println(ans.size() + 20 + 21); static int gcd(int a, int b) return b = 0 ? a : gcd(b, a % b);
9、輸出: 40257 4. 貨物擺放 現(xiàn)在,藍有 n箱貨物要擺放在倉庫,每箱貨物都是規(guī)則的正體。藍規(guī)定了長、寬、三個互相垂直的向,每箱貨物的邊都必 須嚴格平于長、寬、。 藍希望所有的貨物最終擺成個的長體。即在長、寬、的向上分別堆 L、W、H 的貨物,滿n=LWH。 給定 n,請問有多少種堆放貨物的案滿要求。 例如,當 n = 4 時,有以下 6 種案:114、122、141、212、2 2 1、4 1 1。 請問,當 n = 2021041820210418(注意有 16位數(shù)字)時,總共有多少種案? 提:建議使計算機編程解決問題。 分析:給出個數(shù)n,求多少個三元組(L,W,H)使得L x W x
10、 H等于n。同時三元組是考慮順序的,L,W,H是n的因數(shù),即n % L = 0 & n % W = 0 & n % H = 0,為此,我們可以先將n的所有因數(shù)求出來,然后三重循環(huán)遍歷L,W,H,若它們相乘等于n,則找到了 種案。(暴) import *; / 1:需package / 2:類名必須Main,不可修改 public class Main public static void main(String args) / 常數(shù)默認值為int,告訴編譯器它是long型常量 long n = 2021041820210418l; int ans = 0; List l = new Array
11、List(); for(long i = 1; i = Math.sqrt(n); i+) if(n % i = 0) l.add(i); if(i != n / i) l.add(n / i); for(int i = 0; i l.size(); i+) for(int j = 0; j n) continue; for(int k = 0; k l.size(); k+) if(l.get(i) * l.get(j) * l.get(k) = n) ans+; System.out.println(ans); 輸出答案: 2430 路徑 5. 藍學習了最短路徑之后特別興,他定義了個特別的
12、圖,希望找到圖 中的最短路徑。 藍的圖由 2021 個結(jié)點組成,依次編號 1 2021。 對于兩個不同的結(jié)點 a, b,如果 a 和 b 的差的絕對值于 21,則兩個結(jié)點 之間沒有邊相連;如果 a 和 b 的差的絕對值于等于 21,則兩個點之間有條 長度為 a 和 b 的最公倍數(shù)的向邊相連。 例如:結(jié)點 1 和結(jié)點 23 之間沒有邊相連;結(jié)點 3 和結(jié)點 24 之間有條 向邊,長度為 24;結(jié)點 15 和結(jié)點 25 之間有條向 邊,長度為 75。 請計算,結(jié)點 1 和結(jié)點 2021 之間的最短路徑長度是多少。 提:建議使計算機編程解決問題。 分析:題意思很明確,求源點到某個點的最短路徑。最短路
13、問題有兩個常見的算法,Dijkstra算法和Floyed算法。本題適合Dijkstra算 法,為此我們先建圖,圖維矩陣e存儲,dist數(shù)組表源點到某個點的最短距離。最后輸出dist2021的值。 import *; / 1:需package / 2: 類名必須Main, 不可修改 public class Main public static void main(String args) int e = new int20222022; int dist = new int2022; boolean visit = new boolean2022; Arrays.fill(dist, Inte
14、ger.MAX_VALUE); for(int i = 1; i = 2021; i+) for(int j = 1; j = 2021; j+) if(i = j) eij = 0; else if(Math.abs(i - j) = 21) eij = i * j / gcd(i, j); else eij = Integer.MAX_VALUE; dist1 = 0; for(int i = 1; i = 2021; i+) int u = 0, min = Integer.MAX_VALUE; for(int j = 1; j = 2021; j+) if(!visitj & dist
15、j min) min = distj; u = j; visitu = true; for(int j = 1; j = 2021; j+) if(euj != Integer.MAX_VALUE & distu + euj distj) distj = distu + euj; System.out.println(dist2021); static int gcd(int a, int b) return b = 0 ? a : gcd(b, a % b); 輸出答案: 10266837 :編程題 6. 時間顯 題描述 藍要和朋友合作開發(fā)個時間顯的站。 在服務(wù)器上,朋友已經(jīng)獲取了當前的時間
16、,個整數(shù)表,值為從 19701970 年 11 11 00:00:0000:00:00 到當前時刻 經(jīng)過的毫秒數(shù)。 現(xiàn)在,藍要在客戶端顯出這個時間。藍不顯出年,只需要顯出時分秒即可,毫秒也不顯,直接舍去即可。 給定個整數(shù)表的時間,請將這個時間對應(yīng)的時分秒輸出。 輸描述 輸包含個整數(shù),表時間。 輸出描述 輸出時分秒表的當前時間,格式形如 HH:MM:SS,其中 HH 表時,值為 00 到 2323,MM 表分,值為 00 到 5959,SS 表秒,值為 00 到 5959。時、分、秒 不兩位時補前導 00。 輸輸出樣例 例 1 輸 46800999 輸出 13:00:00 例 2 輸 16187
17、08103123 輸出 01:08:23 評測例規(guī)模與約定 對于所有評測例,給定的時間為不超過 10的18次的正整數(shù)。 運限制 最運時間:1s 最運內(nèi)存: 512M 分析:簽到題,注意1s=1000ms,先將ms轉(zhuǎn)化為s,即n/1000(采整除)。對于這題,需理解取余的含義,即不需要知道它經(jīng)歷了多 少年,算出它對于60s分鐘剩了多少秒,對于60min時剩了多少分鐘,24h天剩余了多少時即可,剩余多少取余表。 import Scanner; / 1:需package / 2: 類名必須Main, 不可修改 public class Main public static void main(Str
18、ing args) Scanner scan = new Scanner(System.in); /在此輸您的代碼. long n = scan.nextLong(); n /= 1000; / 1s = 1000ms / 1min = 60s = 60000ms / 1h = 60min = 3600s = 3600000ms System.out.printf(%02d:%02d:%02d, (n % (3600 * 24) / 3600,(n % 3600) / 60,n % 60); scan.close(); 7. 最少砝碼 問題描述 你有架天平。現(xiàn)在你要設(shè)計套砝碼,使得利這些砝碼可
19、以稱出任意 于等于 N的正整數(shù)重量。 那么這套砝碼最少需要包含多少個砝碼? 注意砝碼可以放在天平兩邊。 輸格式 輸包含個正整數(shù) N。 輸出格式 輸出個整數(shù)代表答案。 樣例輸 7 樣例輸出 3 樣例說明 33 個砝碼重量是 1、4、6,可以稱出 1 7的所有重量。 1 = 1; 2 = 6 4(天平邊放 66,另邊放 44); 3 = 4 1; 4 = 4; 5 = 6 1; 6 = 6; 7 = 1 + 6; 少于 3 個砝碼不可能稱出 1 7 的所有重量。 評測例規(guī)模與約定 對于所有評測例,1 N 1000000000。 運限制 最運時間:1s 最運內(nèi)存: 512M 分析:思維題吧,如果以前
20、沒做過的話估計是想不到的,反正我看到之后第反應(yīng)是懵的。看到有的章是這樣推理的,稱取質(zhì)量1只需 個砝碼1,第個需要稱取質(zhì)量2,這時添加個砝碼1可以和第個1組成2,添加砝碼2除了可以組成2之外還可以組成3,添加砝碼3可以 組成2,3,4,添加砝碼4的話就不能得到質(zhì)量2因此不,由貪的思想第個砝碼還是選取砝碼3好,然后可以依次退出規(guī)律。 應(yīng)稱重量選擇的砝碼(choice)最終可稱到的重量(total) 111 234 5913 142740 total+1choice*3choice*3 + total 通過上表可以找出規(guī)律,實際上,由項為1,公為3的等差數(shù)列,可以由組成任意正整數(shù)。 import S
21、canner; 需package / 2: / 1: 類名必須Main, 不可修改 public class Main public static void main(String args) Scanner scan = new Scanner(System.in); / 在此輸您的代碼. int n = scan.nextInt(); int count = 1, now = 1, sum = 1; while(sum n) count+; now *= 3; sum += now; System.out.println(count); scan.close(); 楊輝三形 8. 下的圖形
22、是著名的楊輝三形: 如果我們按從上到下、從左到右的順序把所有數(shù)排成列,可以得到如下數(shù)列: 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, 給定個正整數(shù) N,請你輸出數(shù)列中第次出現(xiàn) N是在第個數(shù)? 輸描述 輸個整數(shù) N。 輸出描述 輸出個整數(shù)代表答案。 輸輸出樣例 例 1 輸 6 輸出 13 評測例規(guī)模與約定 對于 20% 的評測例,1N10; 對于所有評測例,1N1000000000。 運限制 最運時間:1s 最運內(nèi)存: 256M 分析:是偏思維的題,這還是家所討論的暴杯嗎。雖然考試的時候,我們可能想不到能夠AC的代碼,但定不能留空,哪怕寫的 是純暴的
23、代碼也給它交上去,藍橋杯是按點給分的(總共10個計分點),且題這不是明顯的暗嗎對于 20% 的評測 例,1N10。好了進正題,楊輝三實際上就是個排列組合的表格。要是數(shù)據(jù)少的話我們還能通過極限打表給它打出來,但題給 出的n的最值有10的9次,為此我們需要盡可能的優(yōu)化,畢竟優(yōu)化之后可能能多過個點呢。優(yōu)化第步:從圖中可以看出,每 左邊的數(shù)與右邊的數(shù)對稱,因此在遍歷的時候,我們可以只遍歷左邊的圖,且最值第次出現(xiàn)定是在圖的左邊。但這樣還是AC不了。 優(yōu)化第步:考慮左邊圖形的斜,第0斜的開始是(C00),第1斜的開始是(C21),第2斜的開始是(C42)依次第n斜的開始是 (C2nn),且每斜是單調(diào)遞增的,下的斜上的斜??梢杂嬎愕絥取最值也是在第16斜可以遍歷到,因此我們對于輸 的n,從第16斜往第0斜遍歷,直到第次找到。對于每斜采分查找。哎,反正我是沒想到這么巧妙的法,長長見識。 import Scanner; / 1:需package / 2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026中國電子科技集團公司第十一研究所招聘備考題庫及1套完整答案詳解
- 2026年1月濱州展鴻人力資源管理有限公司招聘工作人員(第一批)備考題庫及答案詳解參考
- 2025浙江嘉興職業(yè)技術(shù)學院招聘高層次人才28人備考題庫及參考答案詳解一套
- 2026上半年云南事業(yè)單位聯(lián)考麗江市招聘610備考題庫及完整答案詳解1套
- 2026北京懷柔實驗室招聘職能管理崗2人備考題庫完整參考答案詳解
- 2026山東事業(yè)單位統(tǒng)考濟寧市兗州區(qū)招聘43人備考題庫附答案詳解
- 2026山東威海市教育局直屬學校引進急需緊缺人才專業(yè)增補備考題庫完整參考答案詳解
- 2026天津生態(tài)城投資開發(fā)有限公司社會招聘2人備考題庫及參考答案詳解1套
- 浙江溫州醫(yī)科大學附屬第一醫(yī)院2025年招聘225人筆試歷年參考題庫附帶答案詳解
- 2026上半年安徽事業(yè)單位聯(lián)考郎溪縣招聘46人備考題庫及1套完整答案詳解
- 《游園》課件統(tǒng)編版高中語文必修下冊
- 質(zhì)量責任劃分制度
- JT∕T 1496-2024 公路隧道施工門禁系統(tǒng)技術(shù)要求
- 2024版美團商家合作協(xié)議合同范本
- 一年級上冊數(shù)學應(yīng)用題50道(重點)
- 嵌入式系統(tǒng)實現(xiàn)與創(chuàng)新應(yīng)用智慧樹知到期末考試答案章節(jié)答案2024年山東大學
- 線纜及線束組件檢驗標準
- 人教部編版語文三年級下冊生字表筆順字帖可打印
- 口述史研究活動方案
- 房屋租賃合同txt
- 珍稀植物移栽方案
評論
0/150
提交評論