題目連接:XJOI - NOI2015-13 - Bios
經過神奇的觀察+打表+猜想,有如下規律和性質:spa
1) 刪除的 n 個數就是 1~n。blog
2) 當 c = 2 時,若是 n + 1 是偶數,答案是 lcm(n + 1, (n + 1) / 2 * 3) = 3(n + 1),若是 n + 1 是奇數,答案是 lcm(n + 2, (n + 2) / 2 * 3) = 3(n + 2)。get
注意特判 n = 2 和 n = 4 的狀況,這些狀況下 (n + 1) / 2 * 3 或 (n + 2) / 2 * 3 不在 nc 的範圍內。string
3) 當 c > 2 時,答案是 lcm(n + 1, 2 * (n + 1)) = 2(n + 1)。it
注意特判 n = 1, c = 3 的狀況,這個狀況下 2 * (n + 1) 不在 nc 的範圍內。io
#include <iostream> #include <cstdlib> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; inline void Read(int &Num) { char c = getchar(); while (c < '0' || c > '9') c = getchar(); Num = c - '0'; c = getchar(); while (c >= '0' && c <= '9') { Num = Num * 10 + c - '0'; c = getchar(); } } int T, n, c; int main() { scanf("%d", &T); for (int Case = 1; Case <= T; ++Case) { Read(n); Read(c); if (c == 2) { if (n == 2) printf("12\n"); else if (n == 4) printf("24\n"); else printf("%d\n", (n + 1 + (n + 1) % 2) * 3); } else { if (n == 1 && c == 3) printf("6\n"); else printf("%d\n", 2 * n + 2); } } }