1. 程式人生 > 其它 >【題解】2021暑 DAY2

【題解】2021暑 DAY2

今天的題都還比較簡單,反正 AK 了(,但是幾乎所有人都 AK 了,所以沒啥可高興的(

大概題目難度都是 普及- 吧


T1:級數求和

本題模擬就行。

定義一個變數 $sum$,表示當前的和,然後一直迴圈,當 $sum>k$ 時,退出迴圈。

while(1){
		if(sum > k)break;
		tmp++; 
		sum = sum+((double)1/(double)tmp);		
}

T2:過河卒

做法:遞推

首先先定義一個 $map$ 儲存這個棋盤,然後把馬的控制點標記一下,再遞推即可。

注意 $ans_{0,0}$ 為 $1$,還要考慮出界,馬的控制點。

if(map[i-1][j] == 0 && (i-1) >= 0)ans[i][j]=ans[i-1][j];
if(map[i][j-1] == 0 && (j-1) >= 0)ans[i][j]+=ans[i][j-1];

T3:數的計算

做法:遞推

我們定義 $f_i$ 表示初始數為 $i$ 的方案總數。

因為 $i$ 後面可以接上任意一個不大於它一半的數,當然,它自己本身也符合要求。

for(int i=1; i<=1001; i++){
		for(int j=1; j<=i/2; j++){
			f[i]+=f[j];
		}
		f[i]++;
}

T4:最大公約數和最小公倍數問題

做法:有些數學題(?)