題目:
假如電子計時器所顯示的十個數字是「1115093028」這樣一串數,它表示的數是11月15日9時30分28秒.
在這串數中,「0」出現了2次,「1」出現了三次,「2」、「3」、「5」、「8」、「9」各出現了一次,
而「4」、「6」、「7」沒有出現.如果在電子計時器所顯示的這串數里,0,1,2,3,4,5,6,7,8,9這
十個數字都只出現一次,稱它所表示的時刻為「十全時」,那麼2023年一共有__個這樣的「十全時」.
注:按24小時制記時
分析過程:
1.按照上題所說,『十全時』的數一共十位,十位中要有 0,1,2,3,4,5,6,7,8,9這十個數,也可以說成十位每位都不一樣(ps:因為阿拉伯數字一共也就只有十個單位數);
2.題目所說的2023年不免讓人想到是不是需要判斷是否是閏年。然後一想,閏年和非閏年的區別就是2月份是不是有29號,但是不論是不是有29號,2月的2數和29號肯
定是重複了,不可能是『十全時』數。所以這裡不去考慮是否是閏年的問題
3.題目所述的『月』、『日』、『時』、『分』、『秒』。只有日的數字範圍不是固定的,是根據月份確定的。而其他的都是固定的。
分析結果:
根據我們的分析首先可以確定要使用什麼來篩選這個『十全時』數。因為它的每位不相同,所以使用set集合來篩選,這樣就可以確定,只有當set集合的長度是10的時候,
這個數才是『十全時』數。
然後我們要計算日的數字範圍,那麼我們可以定義乙個陣列,裡面存入十二個月每個月對應的天數,根據月份來取對應的日的數字。
分析到這裡,**就可以開始寫了。
下面貼上我實現的完整**(僅供參考)
public static void main(string args) ;
int count = 0;
settimeset = null;
character timesetarray = new character[10];
char mouthstr = {};
for (int mouth = 1; mouth <= 12; mouth ++) else
for (int day = 1; day <= mouths[mouth - 1]; day ++) else
for (int hour = 0; hour <= 23; hour ++) else
for (int min = 0; min <= 59; min ++) else
for (int second = 0; second <= 59; second ++) else
timeset = new hashset(arrays.aslist(timesetarray));
if (timeset.size() == 10) }}
}}
}system.out.println("[" + year +"] 年的十全時個數為 " + count);
}
計算兩個年份之間的月份
僅為測試,根據實際情況.public class test calendar startcalendar calendar.getinstance startcalendar.settime start calendar endcalendar calendar.getinstance endcal...
2023年值得關注的十個雲計算服務
雲計算 的話題這兩年越來越熱,gigaom 發掘了十個與 雲計算 有關的初創公司,並認為他們今年有可能發展壯大。2.bromium bromium 運用 虛擬化 技術,為企業的網路提供保密服務,防止因為企業員工的電腦 移動手機以及平板電腦接入企業網路而洩漏內部機密。3.cloudability cl...
2012 年值得關注的十個雲計算服務
雲計算 的話題這兩年越來越熱,gigaom 發掘了十個與 雲計算 有關的初創公司,並認為他們今年有可能發展壯大。bromium 運用 虛擬化 技術,為企業的網路提供保密服務,防止因為企業員工的電腦 移動手機以及平板電腦接入企業網路而洩漏內部機密。cloudability 可以幫助使用者追蹤他花在雲服...