計算機概論是一門令人又愛又恨的科目,它的內容可謂包羅萬象。遇到考試時,事前需
要花很多時間準備,才能拿到高分。在學習的內容中,有個章節是數字系統轉換,內容是將
一個十進位的數字,轉換成二進位的數字。現在請你設計一個程式,計算由十進位數字轉換
的二進位數字中,位元等於1 的個數。
輸入說明:
第一行的數字,代表有幾個十進位的數字。第二行開始的每一行,為一個十進位數字,
其範圍為[0, 2147483647]的整數。
輸出說明:
對輸入的十進位數字,以一行分別輸出轉換成二位進數字中,位元等於1 的個數。
輸入範例:
2
1027
65535
輸出範例:
3
16
2012年1月22日 星期日
2012年1月21日 星期六
Oh! My Zero!!
內容
階層運算是很令人頭疼的,因此我们要想方設法地把它簡化。
輸入說明 :
输入檔可能有大量的數據。
每一个输入檔输入一个不算很大的數 n (请用 long)。
每一个输入檔输入一个不算很大的數 n (请用 long)。
輸出說明 :
輸出 n!的末尾零的個數。
範例輸入 :
1
2
10
範例輸出 :
0
0
2
提示 :
1!=1 末尾有0個零;
2!=2 末尾有0個零;
10!=3628800 末尾有2個零。
2!=2 末尾有0個零;
10!=3628800 末尾有2個零。
2012年1月20日 星期五
方塊積木
13歲的小明喜歡玩他的方塊積木,他總是把方塊疊在一起,型成高度不一的方塊堆。然後他說:這是一面牆。五歲的妹妹小每聽到了就跟小明說:真正的牆高度應該要一樣才行。小明聽了覺得有道理,於是決定要搬動一些方塊使所有方塊堆的高度一樣。如下圖。由於小明是個懶惰的小孩,他想要搬動最小數目的方塊,以達成這個目的,你能幫助他嗎? (輸入規範:每組資料有兩列 第一列有一個數字N,代表有幾堆方塊,第二列有n個數字,分別代表這N堆方塊的高度H。另1<=n<=50、1<=H<=100。方塊的總數一定可以整除堆數N,也就是說,一定可以使所有方塊同高度。)
▉
▉
▉ ▉▉ →
▉ ▉ ▉▉ ▉▉▉▉▉▉
▉ ▉ ▉▉ ▉▉▉▉▉▉
▉▉▉ ▉▉ ▉▉▉▉▉▉
▉▉▉▉▉▉ ▉▉▉▉▉▉
輸入範例:
6
5 2 4 1 7 5
輸出範例:
5
▉
▉
▉ ▉▉ →
▉ ▉ ▉▉ ▉▉▉▉▉▉
▉ ▉ ▉▉ ▉▉▉▉▉▉
▉▉▉ ▉▉ ▉▉▉▉▉▉
▉▉▉▉▉▉ ▉▉▉▉▉▉
輸入範例:
6
5 2 4 1 7 5
輸出範例:
5
2012年1月19日 星期四
2012年1月17日 星期二
2012年1月16日 星期一
2012年1月4日 星期三
求餘數
求餘數對於會寫程式的人來說,是個簡單的問題,例如用VB 來求餘數時,可以用mod這個關鍵字來實作。但如果算式為R = B^P mod M 的型態,給B、P、及M,要算出餘數R,當B 或P 很大時,那就變得不簡單了。現在,請你設計一個程式,來解決上述這個不簡單的問題。
輸入說明:
第一行的數字,表示有幾個問題要求解,第二行開始的每一行,為一個獨立的問題。每一行包含三個數字,分別為B、P、及M,例如:10 2009 9 代表B=10、P=2009、M=9。所有數字均為正整數,其範圍屬於[1,100000]。
輸出說明:
對輸入的每個問題分別以一行輸出餘數R。
輸入範例:
2
10 2009 9
2 99 5
輸出範例:
1
3
輸入說明:
第一行的數字,表示有幾個問題要求解,第二行開始的每一行,為一個獨立的問題。每一行包含三個數字,分別為B、P、及M,例如:10 2009 9 代表B=10、P=2009、M=9。所有數字均為正整數,其範圍屬於[1,100000]。
輸出說明:
對輸入的每個問題分別以一行輸出餘數R。
輸入範例:
2
10 2009 9
2 99 5
輸出範例:
1
3
2012年1月2日 星期一
2012年1月1日 星期日
字串重組
請輸入兩組字串,每組長度為八個字元。請注意,字串必須是由A、B、C、D、E、F、G、H這些英文字母所組合的,且每個英文字母再一個字串中限制只能出現一次。請設計一個城市,利用這兩組輸入的字串,組合另一個新的字串輸出。組合的法則為:新字串的前三個字元是從第一組輸入字串的前三個字元而來,後五個字原則是由第二組輸入字串從頭依序遞補上來的。遞補的條件為:遞補的字元必須跟第一組的前三個字元不同。
輸入範例:
ABCDEFGH EHADBCGF
輸出範例:
ABCEHDGF
參照 http://chscvb.blogspot.com/2010/02/20100202.html
輸入範例:
ABCDEFGH EHADBCGF
輸出範例:
ABCEHDGF
參照 http://chscvb.blogspot.com/2010/02/20100202.html
授權碼檢查
Nanosoft資訊軟體公司研發出一套商用軟體,準備於市面上販售,但唯恐遭到未經授權之不合法使用,因此在安裝軟體時,需要使用者輸入授權馬。試寫一個程式,其功能可以檢核此授權碼的正確信。
【規則敘述】
此授權碼由十個位數合成,每一位數可以為0~9的任何一個數字,是判斷方法如下:
首先,將此碼逐次的累加,使的第二位數成為第一位數到第二位數的和,第三位數為第一位數到第三位數的和....第十位數為第一位數到第十位數的和;
進行完第一次的累加和後 ,接著再將所得到的十個數字,第十個數字減掉第一個數字,第九個數字減掉第二個數字....以此類推,得到五組數字,將此五組數字由小到大排列後成為一個新的數列。
此新數列的後三碼為識別碼,必須可為11整除,方為正確的授權碼,故在螢幕上列印出"此為合法之授權碼",反之則印出"此為不合法之授權碼",若授權碼格式錯誤則顯示"授權碼格式錯誤"。
輸入範例:
請輸入授權碼:9476282354
輸出範例:
此為合法之授權碼
【提示】
輸入授權碼為9476282354
第一次運算後得到數列 9 13 20 26 28 36 38 41 46 50
第二次運算後得到數列 41 33 21 12 8
排序後得到數列引 812213341 (341被11整除)
參照: http://chscvb.blogspot.com/2010/02/20100201.html
【規則敘述】
此授權碼由十個位數合成,每一位數可以為0~9的任何一個數字,是判斷方法如下:
首先,將此碼逐次的累加,使的第二位數成為第一位數到第二位數的和,第三位數為第一位數到第三位數的和....第十位數為第一位數到第十位數的和;
進行完第一次的累加和後 ,接著再將所得到的十個數字,第十個數字減掉第一個數字,第九個數字減掉第二個數字....以此類推,得到五組數字,將此五組數字由小到大排列後成為一個新的數列。
此新數列的後三碼為識別碼,必須可為11整除,方為正確的授權碼,故在螢幕上列印出"此為合法之授權碼",反之則印出"此為不合法之授權碼",若授權碼格式錯誤則顯示"授權碼格式錯誤"。
輸入範例:
請輸入授權碼:9476282354
輸出範例:
此為合法之授權碼
【提示】
輸入授權碼為9476282354
第一次運算後得到數列 9 13 20 26 28 36 38 41 46 50
第二次運算後得到數列 41 33 21 12 8
排序後得到數列引 812213341 (341被11整除)
參照: http://chscvb.blogspot.com/2010/02/20100201.html
訂閱:
文章 (Atom)