# 2025/05/02 去打學弟的期中考 ## 前言 因為是高一選修 比較簡單 所以就隨便講講解法即可 ## 題目 ### pA :::success 給一個長度為 $N$ 的陣列 $A$ 讓 $A$ 每個相鄰元素都不相差超過 $1$ 也就是說當 $A_i < A_j$ 將 $A_i, A_j$ 中間塞入 $A_i+1, A_i+2, \ldots, A_j-2, A_j-1$ ::: :::spoiler code 直覺一點的話,直接分情況下去做就行 ```cpp= #include <iostream> using namespace std; int main() { int n; cin >> n; int ls = 0; for(int i = 0; i < n; i++) { int a; cin >> a; if(i == 0); else if(ls == a) cout << ls << ' '; else if(ls < a) { for(int j = ls; j < a; j++) cout << j << ' '; } else if(ls > a) { for(int j = ls; j > a; j--) cout << j << ' '; } ls = a; } cout << ls << '\n'; } ``` 但假如你特別會壓行數 ```cpp= #include <iostream> using namespace std; int main() { int n; cin >> n; int ls; cin >> ls; for(int i = 1; i < n; i++) { int a; cin >> a; for(int j = ls; (ls <= a ? j < a + (ls==a) : j > a); j += (ls <= a ? 1 : -1)) cout << j << ' '; ls = a; } cout << ls << '\n'; } ``` 但我覺沒啥必要ww ::: ### pB :::success 問 $1 \sim N$ 之間的數 有多少個數只被 $A$ 整除 或者 只被 $B$ 整除 ::: :::warning 重點要觀察 $N$ 的範圍 $N$ 才給 $100$ 根本不需要數學解 暴力砸過去是最快的 ::: :::spoiler code ```cpp= #include <iostream> using namespace std; int main() { int n, a, b; cin >> n >> a >> b; int ans = 0; for(int i = 1; i <= n; i++) ans += ((i%a==0) + (i%b==0))==1; cout << ans << '\n'; } ``` ::: ### pC :::success 給 $N$ 個人的分數 找他們各自的排名 排名的定義是: 假如有 $K$ 個人的分數比這個人的分數小 那麼這個人的排名就是 $K+1$ ::: :::warning 仔細觀察範圍 $N \le 100$ 那就直接隨便暴力做做就好 ::: :::spoiler code ```cpp= #include <iostream> using namespace std; int v[105]; int main() { int n; cin >> n; for(int i = 0; i < n; i++) cin >> v[i]; for(int i = 0; i < n; i++) { int ans = 0; for(int j = 0; j < n; j++) ans += v[j] < v[i]; cout << ans+1 << '\n'; } } ``` ::: ### pD :::success $N$ 個選民 $N$ 是奇數 有兩個候選人 各自目前獲得的選票為 $T$、$A$ 問你目前勝利是否已經確定了 ::: :::warning 勝利是否確定 = 目前狀態是否有可能被逆轉 ::: :::spoiler code ```cpp= #include <iostream> using namespace std; int main() { int n, t, a; cin >> n >> t >> a; n -= t + a; // remaining votes if((t >= a && a + n > t) || (t <= a && t + n > a)) { cout << "No\n"; } else cout << "Yes\n"; } ``` ::: ## 結語 回來打打高一選修 發現當初覺得很難很難的題目 現在解起來沒什麼感覺了 也許是題目刷多了 也許是我變強了
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up