按字符串後的數字降序排序,輸出原字符串。關鍵:解析字符串提取數字,結構體存儲原串與數字,sort 自定義比較器。
求所有輸入數的質因數集合,輸出最小兩個質因子乘積。若質因子不足兩個輸出 -1。試除法分解每個數,收集質因子,排序取前兩個。
判斷序列是否為等比數列。處理 0 值邊界:全 0 為等比;含 0 非全 0 需特殊判斷。用 BigInteger 避免溢出,檢查 a[i]*a[i] == a[i-1]*a[i+1]。
核心洞見:光線在兩平行鏡面間反射,等價於鏡像展開後的直線傳播。答案為 φ(n+1) (歐拉函數) 或通過動態規劃/數論推導。代碼展示了兩種解法:篩法預計算 φ 和直接 gcd 計數。
int gcd(int a, int b) { return b ? gcd(b, a%b) : a; }
int main() {
int T, n; scanf("%d", &T);
while (T--) {
scanf("%d", &n);
int ans = 0;
for (int i = 1; i <= n; ++i)
if (gcd(i, n+1) == 1) ans++;
printf("%d\n", ans);
}
}
本場比賽涵蓋排序、數論、大數、幾何/數論轉化四類經典題型。HDU 5430 最具技巧性,展示了「物理反射 → 數論歐拉函數」的優美轉化,值得深入體會。