所屬科目:程式設計
一、色彩三原色:紅色、綠色及藍色為色彩理論的基礎概念,數位影像中像素的色彩使用三個 0 至 255 之間的整數(包含 0 與 255)分別表示一個色彩的紅、綠、藍三個色彩分量。一個色彩中,假設其中一個色彩分量的值均大於其他兩個色彩分量的值,即稱這個像素色彩的色調偏向此最大色彩分量,例如,紅、綠、藍三個色彩分量分別為 20、10、10 時,像素色彩偏向紅色調;紅、綠、藍三個色彩分量分別為 150、200、180 時則偏向綠色調。請使用 Java 或 C++實作一完整程式,計算色彩空間中偏向紅色調的像素色彩總數。 (20 分)
二、請使用 114 繪製一個 h × w 的矩形,其中 h 代表矩形的高,w 代表矩形的寬。第一行使用 114 重複填入,第二行開始,每行先向左移動一個字 元,再使用 114 重複填入。例如,當 h=6,w=8 時,矩形如下所示:114114111411411441141141114114111411411441141141請使用 Java 或 C++實作一完整程式,其中輸入資料的第一行包含兩個正整數 h,w,1≤h≤100,1≤w≤25,兩個正整數間使用一個空格分隔,在讀入 h,w 後,輸出對應的矩形。(20 分)
三、給定一個正整數 n,找出關鍵整數(Pivot integer)x 使得:所有介於 1 至 x 之區間(含 1 與 x)的元素總和,等於所有介於 x 至 n 之區間(含 x 與 n)的元素總和,回傳關鍵整數 x。若不存在此類關鍵整數,則回傳-1。 例如當 n=8 時,因為 1+2+3+4+5+6=6+7+8,所以回傳關鍵整數 x=6,而當 n=1 時,因為 1=1,所以回傳關鍵整數 x=1,但當 n=4 時,因為不存 在此類關鍵整數,所以回傳-1。若使用線性搜尋法(Linear search),進行關鍵整數的尋找,當 n 的值較大時,計算效率很低,並不是一個理想的解題方式,必須使用其他較有計算效率的搜尋方法,例如二元搜尋法 (Binary search)。請使用 Java 或 C++實作一完整程式,其中輸入資料的第一行包含一個正整數 n,1 ≤ n ≤ 1000,代表區間上限,在讀入 n 後,透過二元搜尋法找尋一個區間[1,n]中的關鍵整數,若存在,則回傳關鍵整數值,否則,回傳-1。 (20 分)
四、遞迴(Recursion)將複雜問題分解為同類但規模較小的子問題,並通過不斷呼叫自身解決這些子問題,直至達到一個可直接解決的基本情況(或稱終止條件),從而整個問題得以解決。假設自一個有 n 顆糖果的糖果罐中抓取糖果,每次只可以抓取 1 顆或 2 顆糖果,一共有多少種不同 的抓取糖果方法可以將糖果罐中所有糖果抓光呢?請使用 Java 或 C++ 實作一完整程式,其中輸入資料的第一行包含一個正整數 n,1 ≤ n ≤ 1000,代表糖果罐中糖果總數,在讀入 n 後,透過遞迴找出抓取糖果罐中所有糖果之不同方法的數目。(20 分)
五、阿姆斯壯數(Armstrong number)是指一個 n 位數正整數等於其各位數數字的 n 次方之和。例如,153 是一個三位數,滿足13+53+33=153,其 判定需將數值分解為各位數並計算各位數數字的 n 次方總和,請使用 Java 或 C++實作一完整程式,列印大於 1 且小於 1000 的正整數中所有阿姆斯壯數。(20 分)