演算法競賽入門經典學習筆記
阿新 • • 發佈:2019-01-26
作為一名剛接觸cs專業的萌新小白,開始學習蕊蕊大佬推薦的《演算法競賽入門經典》一書,一邊學習一遍記錄一些自己覺得很有用的小知識,作為自己平凡之路的一部分,日常慢慢更。emmmm
1.定義π的新姿勢:
const double pi=acos(-1.0)
2.判斷一個數的平方根是否為整數:
int m=floor(sqrt(n)+0.5);
if(m*m==n) printf("%d\n",n);
由於誤差的影響,整數1可能會變成0.9999999999,floor的結果可能會是0而不是1,為了減小誤差的影響,一般改為四捨五入。
3.一般要求輸出的行首行尾均無空格,相鄰兩個資料間用單個空格隔開:
例如總共要輸出n個整數,但只有n-1個空格,所以只好分兩條語句輸出。如:
for(int i=n-1;i>=1;i--)
printf("%d",a[i]);
printf("%d\n",a[0]);
另一種方法是設定一個標誌變數first,用來判斷當前要輸出的變數是否為第一個:
int first=0;
for(int i=1;i<=n;i++)
{
if(first) first=0;
else printf(" ");
printf("%d",i);
}
4.在當前流行的競賽平臺中,int都是32位整數,範圍是-2147483648~2147483647.
5.如果想輸出025這樣的數:
printf("%03d",25);
6.輸出轉義字元:
printf("\\n");