2013年第四屆藍橋杯試題(Java本科B組)
1.標題: 世紀末的星期
曾有邪教稱1999年12月31日是世界末日。當然該謠言已經不攻自破。
還有人稱今後的某個世紀末的12月31日,如果是星期一則會....
有趣的是,任何一個世紀末的年份的12月31日都不可能是星期一!!
於是,“謠言製造商”又修改為星期日......
1999年的12月31日是星期五,請問:未來哪一個離我們最近的一個世紀末年(即xx99年)的12月31日正好是星期天(即星期日)?
請回答該年份(只寫這個4位整數,不要寫12月31等多餘資訊)
答案:2299
import java.util.Calendar; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); //Calendar的構造方式是protected,所以不能直接new Calendar cal = Calendar.getInstance(); for (int i=2099; ; i+=100) { //0表示1月,11表示12月 cal.set(i, 11, 31); //星期日,星期一....對應對應1,2,3 if (cal.get(Calendar.DAY_OF_WEEK) == 1) { System.out.println(i); break; } } } }
3.標題: 振興中華
小明參加了學校的趣味運動會,其中的一個專案是:跳格子。
地上畫著一些格子,每個格子裡寫一個字,如下所示:(也可參見p1.jpg)
從我做起振
我做起振興
做起振興中
起振興中華
比賽時,先站在左上角的寫著“從”字的格子裡,可以橫向或縱向跳到相鄰的格子裡,但不能跳到對角的格子或其它位置。一直要跳到“華”字結束。
要求跳過的路線剛好構成“從我做起振興中華”這句話。
請你幫助小明算一算他一共有多少種可能的跳躍路線呢?
答案是一個整數,請通過瀏覽器直接提交該數字。
注意:不要提交解答過程,或其它輔助說明類的內容。
思路:隨便找一條路從左上角走到右下角都能構成從我做起振興中華這句話
答案:35
public class Main { public static int[][] dir = { { 0, 1 }, { 1, 0 } }; public static int sum; public static void main(String[] args) { sum = 0; dfs(0, 0); System.out.println(sum); } private static void dfs(int x, int y) { if (x == 3 && y == 4) { sum++; } for (int i = 0; i < 2; i++) { int newx = x + dir[i][0]; int newy = y + dir[i][1]; if (newx > 3 || newy > 4) continue; dfs(newx, newy); } } }
4.標題: 黃金連分數
黃金分割數0.61803... 是個無理數,這個常數十分重要,在許多工程問題中會出現。有時需要把這個數字求得很精確。
對於某些精密工程,常數的精度很重要。也許你聽說過哈勃太空望遠鏡,它首次升空後就發現了一處人工加工錯誤,對那樣一個龐然大物,其實只是鏡面加工時有比頭髮絲還細許多倍的一處錯誤而已,卻使它成了“近視眼”!!
言歸正傳,我們如何求得黃金分割數的儘可能精確的值呢?有許多方法。
比較簡單的一種是用連分數:
1
黃金數 = ---------------------
1
1 + -----------------
1
1 + -------------
1
1 + ---------
1 + ...
這個連分數計算的“層數”越多,它的值越接近黃金分割數。
請你利用這一特性,求出黃金分割數的足夠精確值,要求四捨五入到小數點後100位。
小數點後3位的值為:0.618
小數點後4位的值為:0.6180
小數點後5位的值為:0.61803
小數點後7位的值為:0.6180340
(注意尾部的0,不能忽略)
你的任務是:寫出精確到小數點後100位精度的黃金分割值。
注意:尾數的四捨五入! 尾數是0也要保留!
顯然答案是一個小數,其小數點後有100位數字,請通過瀏覽器直接提交該數字。
注意:不要提交解答過程,或其它輔助說明類的內容。
答案:0.6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911375
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal one,sum;
one = sum = BigDecimal.ONE;
//具體的合適次數可以自己打印出來看
for (int i=0; i<1000; i++) {
sum = one.add(sum);
//設定精度和舍入方式
sum = one.divide(sum, 200, BigDecimal.ROUND_HALF_UP);
}
System.out.println(sum.setScale(100, BigDecimal.ROUND_HALF_UP));
}
}
5.標題:有理數類
有理數就是可以表示為兩個整數的比值的數字。一般情況下,我們用近似的小數表示。但有些時候,不允許出現誤差,必須用兩個整數來表示一個有理數。
這時,我們可以建立一個“有理數類”,下面的程式碼初步實現了這個目標。為了簡明,它只提供了加法和乘法運算。
class Rational
{
private long ra;
private long rb;
private long gcd(long a, long b){
if(b==0) return a;
return gcd(b,a%b);
}
public Rational(long a, long b){
ra = a;
rb = b;
long k = gcd(ra,rb);
if(k>1){ //需要約分
ra /= k;
rb /= k;
}
}
// 加法
public Rational add(Rational x){
return ________________________________________; //填空位置
}
// 乘法
public Rational mul(Rational x){
return new Rational(ra*x.ra, rb*x.rb);
}
public String toString(){
if(rb==1) return "" + ra;
return ra + "/" + rb;
}
}
使用該類的示例:
Rational a = new Rational(1,3);
Rational b = new Rational(1,6);
Rational c = a.add(b);
System.out.println(a + "+" + b + "=" + c);
請分析程式碼邏輯,並推測劃線處的程式碼,通過網頁提交
注意:僅把缺少的程式碼作為答案,千萬不要填寫多餘的程式碼、符號或說明文字!!
return new Rational(x.rb * ra + x.ra * rb,rb * x.rb);
相關推薦
2013年第四屆藍橋杯試題(Java本科B組)
1.標題: 世紀末的星期 曾有邪教稱1999年12月31日是世界末日。當然該謠言已經不攻自破。 還有人稱今後的某個世紀末的12月31日,如果是星期一則會.... 有趣的是,任何一個世紀末的年份的12月31日都不可能是星期一!! 於是,“謠言製造商”又修改為星期日....
2013年第四屆藍橋杯試題(C/C++本科B組)
1 大數學家高斯有個好習慣:無論如何都要記日記。 他的日記有個與眾不同的地方,他從不註明年月日,而是用一個整數代替,比如:4210 後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。這或許也是個好習慣,它時時刻刻提醒著主人:日子又過去一天,
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 四平方和(程式設計大題)
2016年第七屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 四平方和 四平方和定理,又稱為拉格朗日定理: 每個正整數都可以表示為至多4個正整數的平方和。 如果把0包括進去,就正好可以表示為
2015年第六屆藍橋杯C/C++程式設計本科B組省賽-星系炸彈(結果填空)
#include <iostream> using namespace std; int isYear(int year) { if(year%4==0&&year%100!=0||year%400==0)) return 1; else
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 生日蠟燭(結果填空)
2016年第七屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 生日蠟燭 某君從某年開始每年都舉辦一次生日party,並且每次都要吹熄與年齡相同根數的蠟燭。 現在算起來,他一共吹熄了236根蠟燭
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 剪郵票(結果填空)
2016年第七屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 剪郵票 如【圖1.jpg】, 有12張連在一起的12生肖的郵票。 現在你要從中剪下5張來,要求必須是連著的。 (僅僅連線一個角不
2014年第五屆藍橋杯C/C++程式設計本科B組決賽 出棧次序(結果填空)
2014年第五屆藍橋杯C/C++程式設計本科B組決賽題目彙總: 出棧次序 X星球特別講究秩序,所有道路都是單行線。一個甲殼蟲車隊,共16輛車,按照編號先後發車,夾在其它車流中,緩緩前行。 路邊有
2015年第六屆藍橋杯C/C++程式設計本科B組決賽 密文搜尋(程式設計大題)
2015年第六屆藍橋杯C/C++程式設計本科B組決賽題目彙總: 密文搜尋 福爾摩斯從X星收到一份資料,全部是小寫字母組成。 他的助手提供了另一份資料:許多長度為8的密碼列表。 福爾摩斯發現,這些
2014年第五屆藍橋杯C/C++程式設計本科B組決賽 生物晶片(程式設計大題)
2014年第五屆藍橋杯C/C++程式設計本科B組決賽題目彙總: 生物晶片 X博士正在研究一種生物晶片,其邏輯密集度、容量都遠遠高於普通的半導體晶片。 博士在晶片中設計了 n 個微型光源,每個光源
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 煤球數目(結果填空)
煤球數目有一堆煤球,堆成三角稜錐形。具體:第一層放1個,第二層3個(排列成三角形),第三層6個(排列成三角形),第四層10個(排列成三角形),....如果一共有100層,共有多少個煤球?請填表示煤球總數
2016年第七屆藍橋杯C/C++程式設計本科B組省賽 湊算式(結果填空) DFS
//A + B/C + DEF/GHI = 10 湊算式 標記一下1-9個數,再搜尋一下就好了#include <iostream> using namespace std; bool visited[10]; int ans[100]; int k = 0; i
2015年第六屆藍橋杯C/C++程式設計本科B組省賽 移動距離(程式設計大題)
2015年第六屆藍橋杯C/C++程式設計本科B組省賽題目彙總: 移動距離 X星球居民小區的樓房全是一樣的,並且按矩陣樣式排列。其樓房的編號為1,2,3... 當排滿一行時,從下一行相鄰的樓往反方
2015年第六屆藍橋杯C/C++程式設計本科B組省賽-三羊獻瑞
三羊獻瑞(結果填空) 觀察下面的加法算式: 祥 瑞生 輝 + 三羊 獻 瑞 ------------------- 三 羊 生 瑞 氣 其中,相同的漢字代表相同的數字,不同的漢字代表不同的數字。 請你填寫“三羊獻瑞”所代表的4位數字(答案唯一),不
2013年第四屆藍橋杯省賽C++B組——1、高斯日記
題目標題: 高斯日記 大數學家高斯有個好習慣:無論如何都要記日記。 他的日記有個與眾不同的地方,他從不註明年月日,而是用一個整數代替,比如:4210 後來人們知道,那個整數就是日期,它表示那一天是高斯出生後的第幾天。這或許也是個好習慣,它時時刻刻提醒著主人:
2013年第四屆藍橋杯B組(C/C++)預賽題目及個人答案(歡迎指正)
第一題: 題目標題: 高斯日記 大數學家高斯有個好習慣:無論如何都要記日記。 他的日記有個與眾不同的地方,他從不註明年月日,而是用一個整數代替,比如:4210 後來人們知道,
2015年第六屆藍橋杯試題(C/C++本科B組)
1 有些人很迷信數字,比如帶“4”的數字,認為和“死”諧音,就覺得不吉利。雖然這些說法純屬無稽之談,但有時還要迎合大眾的需求。某抽獎活動的獎券號碼是5位數(10-99),要求其中不要出現帶“4”的號碼,主辦單位請你計算一下,如果任何兩張獎券不重號,最多可發出獎券多少張。 請
2017年第八屆藍橋杯試題(C/C++本科B組)1-8題
1.標題: 購物單 小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。 這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。 小明也有個怪癖,不到萬不得已,從不刷卡,直接
2016年第七屆藍橋杯試題(C/C++本科B組)
3.湊算式 B DEF A + --- + ------- = 10 C GHI (如果顯示有問題,可以參見【圖1.jpg】) 這個算式中A~I代表1~9的數字,不同的字母代表不同的數字。 比如: 6+8/3+952/
17年第八屆藍橋杯省賽(C語言B組) 題解
最近 又從新做了一遍,主要是用程式碼實現.跑出答案...1:標題: 購物單 小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。 這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠
煤球數目(2016年第七屆藍橋杯c/c++省賽B組(1題))
第一題 :煤球數目 題目敘述: 有一堆煤球,堆成三角稜錐形。具體: 第一層放1個, 第二層3個(排列成三角形), 第三層6個(排列成三角形), 第四層10個(排列成三角形), …. 如果