一直想做acm的題但是一直沒敢做,今天入門看看,結果發現1+1這樣的題都通過不了,一下總結了初次接觸會遇到的問題:
1.輸入輸出問題:
注意題目要求的輸出格式
2.最重要的:保證資料計算過程中值的邊界問題,不要讓值在中間運算的時候超出數值的表示範圍。
一下以1001為例子:
題目要求輸入若干個值n,分別求1加到n的值,例如題目給出輸入1,輸出1,輸入100輸出100,但是在兩個結果間加了乙個空格,我也不知道出題的是怎麼寫成批量輸入,並批量輸出的。實際效果如下:
2.數值計算問題:
正確通過的**:
#include
int sum(int n)
int main()
return 0;
}錯誤的**:
#include
int sum(int n)
int main()
return 0;
}第二段**提交了好多次,就是計算錯誤,後來想想可能是(n+1)*n時可能會發生中間結果越界(大於2147 483 647)之後再除以2,,這時候就沒有意義了,所以我們先除以2,在計算乘法,這樣能保證最大的計算範圍。
ACM注意事項
acm競賽中不能使用一些 螢幕控制和鍵盤讀取的函式,如 getch geche gotoxy clrscr 另外fflush stdio 這個函式也不能使用,因為在有的編譯器中並不支援這個函式。提交後可能會出現runtime error 如果遇上題目表意不明的情況可以向監考人員詢問,如果是網路賽還可...
做增刪改查時幾點注意事項
1 新增時某些特殊欄位要進行驗證,必要時進行正則驗證 2 新增提交時如果提交失敗在新增頁面仍可以顯示之前填寫的資料 方法 echo 3 修改某條資料,修改完成會跳到修改的那條資料 如果是篩選後修改,修改後也可以跳到篩選前的頁面。然後把這個位址傳到編輯頁面 在提交時獲取這個值,提交成功後直接跳轉就ok...
用BigDecimal做除法時的注意事項
這裡用兩種方式對10 3,四捨五入保留兩位小數做處理 一 將setscale 方法寫在divide 方法裡面 二 將setscale 方法寫在divide 方法外面 bigdecimal a newbigdecimal 10 bigdecimal b newbigdecimal 3 system.o...