intmain(){ for (int n = 3; n <= 20; ++n) { for (int i = 1; i <= n; ++i) { b[i] = i; } int cnt = 0; do { int flag = 1; for (int i = 1; i <= n; ++i) { if (b[i] == i) { flag = 0; break; } } cnt += flag; } while (next_permutation(b + 1, b + n + 1)); a[n] = cnt; printf("%d, ", cnt); } return0; }
constint MAXN = 40000 + 10; vector<int> G[MAXN]; int len[MAXN];
intmain(){ int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < m; ++i) { int u, v; scanf("%d%d", &u, &v); G[u].push_back(v); G[v].push_back(u); } for (int i = 1; i <= n; ++i) { len[i] = G[i].size(); } int q; scanf("%d", &q); while (q--) { int s, t; scanf("%d%d", &s, &t); int cnt = 0; for (int i = 0; i < len[s]; ++i) { for (int j = 0; j < len[t]; ++j) { if (G[s][i] == G[t][j]) { cnt++; } } } printf("%d\n", cnt); } return0; }
constint MAXN = 40000 + 10; vector<int> G[MAXN]; int len[MAXN];
intmain(){ int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < m; ++i) { int u, v; scanf("%d%d", &u, &v); G[u].push_back(v); G[v].push_back(u); } for (int i = 1; i <= n; ++i) { sort(G[i].begin(), G[i].end()); len[i] = G[i].size(); } int q; scanf("%d", &q); while (q--) { int s, t; scanf("%d%d", &s, &t); int i = 0, j = 0, cnt = 0; while (i < len[s] && j < len[t]) { if (G[s][i] > G[t][j]) { ++j; } else { if (G[s][i] == G[t][j]) { ++cnt; } ++i; } } printf("%d\n", cnt); } return0; }
intmain(){ int n, m; scanf("%d%d", &n, &m); for (int i = 0; i < m; ++i) { int u, v; scanf("%d%d", &u, &v); G[u][v] = G[v][u] = 1; } int q; scanf("%d", &q); while (q--) { int s, t; scanf("%d%d", &s, &t); printf("%d\n", (G[s] & G[t]).count()); } return0; }
intmain(){ int T; scanf("%d", &T); while (T--) { longlong n, ans; scanf("%lld", &n); ans = (3 * n - 1) / 2; printf("%lld\n", ans); } return0; }
当然要是猜不出来也没事,可以直接用暴力方法求解,我就模拟换糖的过程就行了,刚开始得到了$n$块糖纸,换到了$\left\lfloor\frac{n}{3}\right\rfloor$块糖,现在还剩下$\left\lfloor\frac{n}{3}\right\rfloor + n % 3$块糖纸,依次模拟下去就行了,代码如下:
#include<bits/stdc++.h> usingnamespace std;
intmain(){ int T; scanf("%d", &T); while (T--) { int n; scanf("%d", &n); int ans = n; while (n > 2) { ans += n / 3; n = n / 3 + n % 3; } printf("%d\n", ans); } return0; }