顯示具有 台中女中程式解題系統 標籤的文章。 顯示所有文章
顯示具有 台中女中程式解題系統 標籤的文章。 顯示所有文章

2014年6月6日 星期五

b012: 羅馬數字

b012: 羅馬數字 這題真的非常經典,說起來這題我花了很多的時間XDDDD

這題也讓我知道 "相信" 的重要性,說實在話,很多時候我都不太相信,輸入者的 input ,始終認為會有人故意亂打資料來做判斷;其實要做那些判斷也很簡單,但是我認為,寫程式就是要互相信任,要相信使用者有按照需求執行,畢竟總是以懷疑的眼光看著別人,別人也是以相同的眼光看著你。

===============================================

這題的要求有一點

  1. 羅馬數字轉阿拉伯數字
演算法部分我使用了
  1. 先判斷羅馬字母
  2. 全部加總
  3. 把多加的扣掉
就那麼的簡單,至於程式我就放在下方

程式的部分我有使用 map ( 用的很糟糕="= ),但我覺得很有趣XDDD ,有空或者有新的想法就會在po不一樣的程式碼上來!!


2014年6月2日 星期一

container (容器) list 使用 + b001: 最後倒數 (**)

容器是我第一次的使用;在我的理解中容器有點類似"盒子",具有空間,而空間中的物體具有類似的功能,和原先的基本型態有點不同,比較屬於把功能類似的聚在一起,而不僅是型態一樣的放在一起 (可能解讀有點錯誤,如果有錯請見諒XD )

會想使用容器,主要在於演算法的部分;像是排序、搜尋等。我始終認為演算法雖然把實作的部分抽離出來,但是對於一個程式設計師而言,還是需要了解具體的實作方式 (除非不碰程式碼) ,而程式的使用我認為分三個部分:

  1. 不會使用
  2. 濫用
  3. 正確使用
不一定三個部分都需要、但依照這個三個部分可以知道自己問題所在。

=======================================================




上面的版本是 list 的版本,至於簡單的版本我就不貼了XDDD ,我怕會有人拿來抄,所以就不公佈了,至於效能方面其實是相同的 (經實測是沒有差別的) 。

2014年5月30日 星期五

程式心得 + 台中女中程式解題系統 - a042: 13的次方

截至目前為止,我在此系統練習了大約60題,大部分都是基礎的練習;雖然題目較為簡單,但我還是有粗心大意的時候XDDD 

大部分都是沒仔細看清楚題目要求,想要快點交出去惹的禍,有點過於毛躁。有些題目在寫的時候,感覺特別有趣,像是 a049: 斜紋地硨 、 a041: 收集冰棒棍 等。 有些題目比較偏觀念,在寫的時候得多想想。

目前注意到的問題有幾點:

  1. 空間大小問題
  2. C++輸出格式
  3. 函數、迴圈、演算法的使用
這幾個問題,是我練習時覺得比較繁瑣的地方;其實會寫到演算法,是想讓自己的程式能力有所增長,這期間還重新把資料結構拿出來重讀 ( 非常難專心閱讀,思緒常常跑掉... )。最近常有思緒雜亂的問題,這件事情讓我覺得很難過 ( 就像是我現在在打文章,但可能會想說等等要做什麼事情、還有甚麼東西得做... );程式寫到一半會想東想西,反正就是很不專心,這部分我覺得讓我寫程式受到很嚴重的挑戰。

我喜歡寫程式動腦的過程,但時常發現自己寫程式有很多毛病,而且不太能有解決的辦法,但我希望在程式這部分有所成長,所以寫 Blogger 來砥礪自己,希望自己能進步,而且有效率的成長。


==========================================================================
a042: 13的次方 (**) 內有題目。

這題我覺得很有趣,它使用了兩個觀念
  1. 對13的了解
  2. 十位數的次方邏輯
一開始我以為這題是要問13的N次方有幾位數XDDDD ( 這就是我不專心的證明XD ),後來在看了一次題目才知道只求10位數,這題我做錯兩次,一次就是看錯,另外就是10位數的邏輯有點問題,當然最後還是做出來了!!  這題也是我覺得很有趣的一題,下面附上參考程式碼。


#include "iostream"  
#include "cmath"  
using namespace std;      
  
int main(){    
    int num;  
    while(cin >> num){  
        unsigned int i=1;  
        while(num>0){  
            i *=13;  
            i %=100;  
            num--;  
        }  
        cout << (int)((i%100)/10) << endl;  
    }  
    return 0;    
}