题意

定义整数nnn的拆分n=a1+a2+...+amn=a_1+a_2+...+a_mn=a1​+a2​+...+am​为"enigmatic partition"为符合以下条件的拆分:

  1. ai∈Za_i\in Zai​∈Z且1≤ai≤n1\le a_i\le n1≤ai​≤n。
  2. ai≤ai+1≤ai+1a_i\le a_{i+1}\le a_i+1ai​≤ai+1​≤ai​+1
  3. am=a1+2a_m=a_1+2am​=a1​+2

设f(n)f(n)f(n)表示nnn有多少种不同的"enigmatic partition",求∑i=lrf(i)\displaystyle\sum_{i=l}^rf(i)i=l∑r​f(i).

1≤l≤r≤1051\le l\le r\le10^51≤l≤r≤105


写在前面

考场上对mmm分类打表归纳出了f(n)f(n)f(n)的数学表达式,但是不知道如何用数学证明,如果有大佬知道怎么证明请联系一下我,谢谢。


题解

首先可以写一个爆搜

#include<bits/stdc++.h>
using namespace std;
const int N=100+5;
int n,a[N],f[N];
void dfs(int m,int res){if(res<0)return;if(res==0){--m;if(a[m]==a[1]+2)++f[n];return;}a[m]=a[m-1];dfs(m+1,res-a[m]);if(a[m-1]<=a[1]+1){a[m]=a[m-1]+1;dfs(m+1,res-a[m]);}
}
int main(){for(n=1;n<=50;++n){for(int i=1;i<=n;++i)a[1]=i,dfs(2,n-i);}for(n=1;n<=50;++n)printf("%2d:%3d\n",n,f[n]);return 0;
}
nnn 111 222 333 444 555 666 777 888 999 101010 111111 121212 131313 141414 151515 161616 171717 181818 191919 202020 212121 222222 232323 242424 252525 262626 272727 282828 292929 303030 313131 323232 333333 343434 353535 363636 373737 383838 393939 404040 414141 424242 434343 444444 454545 464646 474747 484848 494949 505050
f(n)f(n)f(n) 000 000 000 000 000 111 111 222 444 444 666 999 101010 111111 171717 171717 212121 242424 282828 313131 383838 373737 454545 505050 565656 565656 686868 696969 787878 838383 919191 949494 107107107 106106106 122122122 126126126 136136136 137137137 155155155 158158158 171171171 176176176 190190190 193193193 214214214 211211211 231231231 238238238 254254254 256256256

粗略地看只有f(2k+1)f(2k+1)f(2k+1)和f(2k+2)f(2k+2)f(2k+2)相差较小,但和f(2k)f(2k)f(2k)相差较大的规律。

通过简易分析,可知当m=n−2,n−3m=n-2,n-3m=n−2,n−3且n≥8n\ge8n≥8时一定只有一种方案;当m=n−4m=n-4m=n−4且n≥9n\ge9n≥9时只有两种方案。

考虑对不同的mmm进行分类打表:

int g[N][N];
void dfs(int m,int res){...if(res==0){--m;if(a[m]==a[1]+2)++g[n][m];return;}...
}
int main(){...for(n=1;n<=50;++n){printf("%2d:",n);for(int m=1;m<=n;++m)printf("%3d ",g[n][m]);puts("");}...
}

得到如下表格

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
1 000
2 000 000
3 000 000 000
4 000 000 000 000
5 000 000 000 000 000
6 000 000 111 000 000 000
7 000 000 000 111 000 000 000
8 000 000 000 111 111 000 000 000
9 000 000 111 111 111 111 000 000 000
10 000 000 000 000 222 111 111 000 000 000
11 000 000 000 111 111 222 111 111 000 000 000
12 000 000 111 111 111 222 222 111 111 000 000 000
13 000 000 000 111 111 222 222 222 111 111 000 000 000
14 000 000 000 000 111 111 333 222 222 111 111 000 000 000
15 000 000 111 111 222 222 222 333 222 222 111 111 000 000 000
16 000 000 000 111 111 111 222 333 333 222 222 111 111 000 000 000
17 000 000 000 111 111 222 222 333 333 333 222 222 111 111 000 000 000
18 000 000 111 000 111 222 222 222 444 333 333 222 222 111 111 000 000 000
19 000 000 000 111 111 222 222 333 333 444 333 333 222 222 111 111 000 000 000
20 000 000 000 111 222 111 222 222 333 444 444 333 333 222 222 111 111 000 000 000
21 000 000 111 111 111 222 333 333 333 444 444 444 333 333 222 222 111 111 000 000 000
22 000 000 000 000 111 111 222 222 333 333 555 444 444 333 333 222 222 111 111 000 000 000
23 000 000 000 111 111 222 222 333 333 444 444 555 444 444 333 333 222 222 111 111 000 000 000
24 000 000 111 111 111 222 222 333 333 333 444 555 555 444 444 333 333 222 222 111 111 000 000 000
25 000 000 000 111 222 222 222 333 333 444 444 555 555 555 444 444 333 333 222 222 111 111 000 000 000
26 000 000 000 000 111 111 222 222 333 333 444 444 666 555 555 444 444 333 333 222 222 111 111 000 000 000
27 000 000 111 111 111 222 222 333 444 444 444 555 555 666 555 555 444 444 333 333 222 222 111 111 000 000 000
28 000 000 000 111 111 111 333 222 333 333 444 444 555 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
29 000 000 000 111 111 222 222 333 333 444 444 555 555 666 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
30 000 000 111 000 222 222 222 222 333 444 444 444 555 555 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
31 000 000 000 111 111 222 222 333 333 444 444 555 555 666 666 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
32 000 000 000 111 111 111 222 333 333 333 444 444 555 555 666 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
33 000 000 111 111 111 222 222 333 333 444 555 555 555 666 666 777 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
34 000 000 000 000 111 111 222 222 333 333 444 444 555 555 666 666 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
35 000 000 000 111 222 222 333 333 333 444 444 555 555 666 666 777 777 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
36 000 000 111 111 111 222 222 222 444 333 444 555 555 555 666 666 777 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
37 000 000 000 111 111 222 222 333 333 444 444 555 555 666 666 777 777 888 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
38 000 000 000 000 111 111 222 222 333 333 444 444 555 555 666 666 777 777 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
39 000 000 111 111 111 222 222 333 333 444 444 555 666 666 666 777 777 888 888 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
40 000 000 000 111 222 111 222 333 333 444 444 444 555 555 666 666 777 777 888 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
41 000 000 000 111 111 222 222 333 333 444 444 555 555 666 666 777 777 888 888 999 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
42 000 000 111 000 111 222 333 222 333 333 444 444 555 666 666 666 777 777 888 888 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
43 000 000 000 111 111 222 222 333 333 444 444 555 555 666 666 777 777 888 888 999 999 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
44 000 000 000 111 111 111 222 222 333 333 555 444 555 555 666 666 777 777 888 888 999 101010 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
45 000 000 111 111 222 222 222 333 444 444 444 555 555 666 777 777 777 888 888 999 999 101010 101010 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
46 000 000 000 000 111 111 222 222 333 333 444 444 555 555 666 666 777 777 888 888 999 999 111111 101010 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
47 000 000 000 111 111 222 222 333 333 444 444 555 555 666 666 777 777 888 888 999 999 101010 101010 111111 101010 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
48 000 000 111 111 111 222 222 333 333 333 444 555 555 555 666 777 777 777 888 888 999 999 101010 111111 111111 101010 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
49 000 000 000 111 111 222 333 333 333 444 444 555 555 666 666 777 777 888 888 999 999 101010 101010 111111 111111 111111 101010 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
50 000 000 000 000 222 111 222 222 333 444 444 444 555 555 666 666 777 777 888 888 999 999 101010 101010 121212 111111 111111 101010 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000

可以看出非常明显的规律,特别的当m≥n2m\ge\frac n2m≥2n​时,g[n][m]g[n][m]g[n][m]的值为确定的常数,且每到偶数行就会多出一个常数,归纳后结果为⌊n−24⌋\lfloor\frac{n-2}4\rfloor⌊4n−2​⌋。

当m<n2m<\frac n2m<2n​时,继续观察可以发现:

  1. m=2k+3m=2k+3m=2k+3时,这一列几乎全是kkk,会出现少数k+1k+1k+1。
  2. m=2k+4m=2k+4m=2k+4时,这一列几乎全是kkk和k+1k+1k+1交替出现,少量kkk会变成k+1k+1k+1

事出反常必有妖,观察这些反常的k+1k+1k+1出现的规律,可以总结得到

  1. m=2k+3m=2k+3m=2k+3时,反常的k+1k+1k+1出现在2k+32k+32k+3的倍数行,即mmm的倍数行。
  2. m=2k+4m=2k+4m=2k+4时,反常的k+1k+1k+1出现在2k+42k+42k+4的倍数行,即mmm的倍数行。

大胆猜测,f(n)f(n)f(n)的值与其约数个数d(n)d(n)d(n)有关。

任取111行,对比其将反常的数修正前后的g[n][m]g[n][m]g[n][m],得到:

424242 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
修正前 000 000 111 000 111 222 333 222 333 333 444 444 555 666 666 666 777 777 888 888 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000
修正后 000 000 000 000 111 111 222 222 333 333 444 444 555 555 666 666 777 777 888 888 101010 999 999 888 888 777 777 666 666 555 555 444 444 333 333 222 222 111 111 000 000 000

可以发现所有nnn的大于222,小于n2\frac n22n​的约数列都出现了反常的k+1k+1k+1。

总结一下前面的规律可以得到
f(n)−f(n−1)=两行反常的k+1出现次数差+常数\displaystyle f(n)-f(n-1)=\text{两行反常的k+1出现次数差}+\text{常数} f(n)−f(n−1)=两行反常的k+1出现次数差+常数

而每行反常的k+1k+1k+1出现次数又与d(n)d(n)d(n)有关,通过进一步观察发现次数差恰好等于d(n)−d(n−1)d(n)-d(n-1)d(n)−d(n−1)。

回到最初的表格,算出h(n)=f(n)−f(n−1)−[d(n)−d(n−1)]h(n)=f(n)-f(n-1)-[d(n)-d(n-1)]h(n)=f(n)−f(n−1)−[d(n)−d(n−1)]

nnn 111 222 333 444 555 666 777 888 999 101010 111111 121212 131313 141414 151515 161616 171717 181818 191919 202020 212121 222222 232323 242424 252525 262626 272727 282828 292929 303030 313131 323232 333333 343434 353535 363636 373737 383838 393939 404040 414141 424242 434343 444444 454545 464646 474747 484848 494949 505050
h(n)h(n)h(n) −1-1−1 −1-1−1 000 −1-1−1 111 −1-1−1 222 −1-1−1 333 −1-1−1 444 −1-1−1 555 −1-1−1 666 −1-1−1 777 −1-1−1 888 −1-1−1 999 −1-1−1 101010 −1-1−1 111111 −1-1−1 121212 −1-1−1 131313 −1-1−1 141414 −1-1−1 151515 −1-1−1 161616 −1-1−1 171717 −1-1−1 181818 −1-1−1 191919 −1-1−1 202020 −1-1−1 212121 −1-1−1 222222 −1-1−1 232323 −1-1−1

归纳得
h(n)={−1,2∣nn−32,2∤nh(n)=\left\{\begin{aligned} &-1,&2\mid n\\ &\frac{n-3}2,&2\nmid n \end{aligned}\right. h(n)=⎩⎨⎧​​−1,2n−3​,​2∣n2∤n​

用累加法可以求得

f(n)−f(1)−[d(n)−d(1)]=∑i=2nh(i)={−2k+(k−1)(k−2)2,n=2k+1−2k−1+(k−1)(k−2)2,n=2k+2f(n)-f(1)-[d(n)-d(1)]=\sum_{i=2}^nh(i)=\left\{\begin{aligned} &-2k+\frac{(k-1)(k-2)}2,&n=2k+1\\ &-2k-1+\frac{(k-1)(k-2)}2,&n=2k+2 \end{aligned}\right. f(n)−f(1)−[d(n)−d(1)]=i=2∑n​h(i)=⎩⎪⎪⎨⎪⎪⎧​​−2k+2(k−1)(k−2)​,−2k−1+2(k−1)(k−2)​,​n=2k+1n=2k+2​
其中k=⌊n−12⌋k=\lfloor\frac{n-1}2\rfloork=⌊2n−1​⌋,化简可得

f(n)=d(n)+12⌊n−12⌋2−32⌊n−12⌋−12[3+(−1)n]f(n)=d(n)+\frac12\lfloor\frac{n-1}2\rfloor^2-\frac32\lfloor\frac{n-1}2\rfloor-\frac12[3+(-1)^n] f(n)=d(n)+21​⌊2n−1​⌋2−23​⌊2n−1​⌋−21​[3+(−1)n]

记s(n)=∑i=1nf(i)\displaystyle s(n)=\sum_{i=1}^nf(i)s(n)=i=1∑n​f(i),令k=⌊n−12⌋k=\lfloor\frac{n-1}2\rfloork=⌊2n−1​⌋,当n=2k+1n=2k+1n=2k+1时,有
s(n)=f(2k+1)+∑i=0k−1[f(2i+1)+f(2i+2)]=∑i=1nd(i)+12(k2−3k−2)+∑i=0k−1(i2−3i−3)=∑i=1nd(i)+12(k2−3k−2)+∑i=1k−1i2−3∑i=1k−1i−3k\begin{aligned} s(n)&=f(2k+1)+\sum_{i=0}^{k-1}[f(2i+1)+f(2i+2)]\\ &=\sum_{i=1}^nd(i)+\frac12(k^2-3k-2)+\sum_{i=0}^{k-1}(i^2-3i-3)\\ &=\sum_{i=1}^nd(i)+\frac12(k^2-3k-2)+\sum_{i=1}^{k-1}i^2-3\sum_{i=1}^{k-1}i-3k \end{aligned} s(n)​=f(2k+1)+i=0∑k−1​[f(2i+1)+f(2i+2)]=i=1∑n​d(i)+21​(k2−3k−2)+i=0∑k−1​(i2−3i−3)=i=1∑n​d(i)+21​(k2−3k−2)+i=1∑k−1​i2−3i=1∑k−1​i−3k​

同理,当n=2k+2n=2k+2n=2k+2时
s(n)=∑i=1nd(i)+∑i=1ki2−3∑i=1ki−3(k+1)s(n)=\sum_{i=1}^nd(i)+\sum_{i=1}^{k}i^2-3\sum_{i=1}^{k}i-3(k+1) s(n)=i=1∑n​d(i)+i=1∑k​i2−3i=1∑k​i−3(k+1)

其中∑i=1nd(i)=∑i=1n⌊ni⌋\displaystyle\sum_{i=1}^nd(i)=\sum_{i=1}^n\lfloor\frac ni\rfloori=1∑n​d(i)=i=1∑n​⌊in​⌋可以根号分块处理,∑i=1ki2\displaystyle\sum_{i=1}^ki^2i=1∑k​i2和∑i=1ki\displaystyle\sum_{i=1}^kii=1∑k​i可以用求和公式O(1)O(1)O(1)处理,故单次询问的复杂度为O(n)O(\sqrt n)O(n​)。

算法一:线性筛+递推

时间复杂度O(n+T)O(n+T)O(n+T)

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
typedef long long ll;
int is[N], pr[N], d[N], c[N];
ll f[N], s[N];
int main() {int n = 1e5;d[1] = 1;for (int i = 2; i <= n; ++i) {if (!is[i])pr[++pr[0]] = i, d[i] = 2, c[i] = 1;for (int j = 1, x; j <= pr[0] && (x = i * pr[j]) <= n; ++j) {is[x] = 1;if (i % pr[j])c[x] = 1, d[x] = d[i] << 1;else {c[x] = c[i] + 1, d[x] = d[i] / c[x] * (c[x] + 1);break;}}}for (int i = 1; i <= n; ++i)f[i] = f[i - 1] + d[i] - d[i - 1] + (i & 1 ? (i - 3) / 2 : -1),s[i] = s[i - 1] + f[i];scanf("%*d");for (int i = 1, l, r; ~scanf("%d%d", &l, &r); ++i)printf("Case #%d: %lld\n", i, s[r] - s[l - 1]);return 0;
}

算法二:根号分块

时间复杂度O(Tn)O(T\sqrt n)O(Tn​)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll s1(int n) { return (ll)n * (n + 1) >> 1; }
inline ll s2(int n) { return (ll)n * (n + 1) * (n << 1 | 1) / 6; }
inline ll s(int n) {if (!n)return 0;int k = (n - 1) / 2, f = n & 1;ll Sum = n & 1 ? ((ll)k * (k - 3) - 2) >> 1 : 0ll;for (int i = 1, j; i <= n; i = j + 1) {j = n / (n / i);Sum += (ll)(n / i) * (j - i + 1);}Sum += s2(k - f) - 3 * s1(k - f) - 3 * (k + 1 - f);return Sum;
}
int main() {scanf("%*d");for (int i = 1, l, r; ~scanf("%d%d", &l, &r); ++i)printf("Case #%d: %lld\n", i, s(r) - s(l - 1));return 0;
}

后记

赛后发现,把此题扩展到am=a1+ka_m=a_1+kam​=a1​+k,对mmm分类打出来的表找依旧很有规律,稍微总结一下应该也能做。

[NowCoder5673E]Enigmatic Partition相关推荐

  1. 2020暑期牛客多校训练营第八场(E)Enigmatic Partition(数学,二阶隔项差分)

    Enigmatic Partition 原题请看这里 题目描述: 数字nnn的分区是所有数字之和等于nnn的集合. 如果分区n=a1+a2+...+amn = a_1 + a_2 + ... + a_ ...

  2. 【2020年牛客暑假第八场】E题 Enigmatic Partition

    [2020年牛客暑假第八场]E题 Enigmatic Partition 一阶差分+隔项差分 题意 思路 方法一 方法二 Code 反思 题目链接: https://ac.nowcoder.com/a ...

  3. 2020牛客暑期多校训练营Enigmatic Partition(数学,二阶隔项差分)

    Enigmatic Partition 题目描述 输入描述: 输出描述: 示例1 输入 3 5 7 7 9 1 9 输出 Case #1: 2 Case #2: 7 Case #3: 8 说明 题目大 ...

  4. 牛客多校8 - Enigmatic Partition(二阶差分)

    题目链接:点击查看 题目大意:首先定义 " n 的拆分 " 是 n = a[ 1 ] + a[ 2 ] + ... + a[ m ] ,在本题中,n 的拆分需要满足几个条件: a[ ...

  5. 2020牛客暑期多校训练营(第八场) Enigmatic Partition

    原题 题目描述 样例 输入 3 5 7 7 9 1 9 输出 Case #1: 2 Case #2: 7 Case #3: 8 说明 f(1)=0. f(2)=0. f(3)=0. f(4)=0. f ...

  6. 牛客多校第八场 Enigmatic Partition(DP)

    思路: 只看懂了题解的写法,还有一种差分的神仙写法实在看不懂. 因为每个数字是由三个连续数字构成,然后数目不确定,所以我们枚举第一个数字l,那么就知道这三个数字是l,l+1,l+2. 我们枚举l的数目 ...

  7. E Enigmatic Partition 2020牛客暑期多校训练营(第八场)

    https://ac.nowcoder.com/acm/contest/5673/E 设我们要算出f[1-n],那么枚举a,a+1,a+2的个数,要满足x*a+(a+1)*y+(a+2)*z=1-n的 ...

  8. 2020牛客暑期多校训练营(第八场)E.Enigmatic Partition(差分+隔项差分/dp+暴力)

    题目 n的m划分是把n划分成m个数之和,令,要求满足: ,, 计f(n)为n的满足上述限制的划分数, T(T<=1e4)组询问,每次给出l,r(1<=l<=r<=1e5),询问 ...

  9. 2020牛客暑期多校训练营(第八场)E Enigmatic Partition —— 找规律,差分上差分,有丶东西

    This way 题意: 定义合法序列: n=a1+a2+-+am(m的大小是你自己构造的&m>=3),并且满足以下条件 定义f(n)为构造n的合法序列的情况数,然后每次问你n为l~r中 ...

  10. 2020牛客暑期多校训练营(第八场)Enigmatic Partition

    题目链接 https://ac.nowcoder.com/acm/contest/5673/E 题目大意 将数 x 拆分,需要满足拆分的数的最大和最小的差值为2,且相邻两个数的差值不能超过1 定义 f ...

最新文章

  1. ubuntu和windows系统双系统的开机选项界面有很多无关选项
  2. TRzCheckTree的使用
  3. CentOS7下搭建Nextcloud13.0.5
  4. java保持运行_保持Java程序无限运行的方法是有效的吗?
  5. bzoj2957 奥妙重重的线段树
  6. linux原理 培训,Linux容器技术原理和使用
  7. Artifact到底是什么
  8. python输出print(x+y)_Python语句序列“x='car';y=2;print(x+y)”的输出结果是() (2.0分)_学小易找答案...
  9. Guava学习笔记(1)--安全地使用null(Using and avoiding null)
  10. springboot与docker整合
  11. 乳化液稳定剂php,乳化液稳定剂PHP对小于0.1mm煤泥浮选的影响
  12. webpack 了解
  13. vs 自动生成core dump文件
  14. 基于几何学习图像的三维重建发展_基于深度学习的三维重建——MVSNet系列论文解读...
  15. mysql vc运行库_VC++运行库安装
  16. 这几个小工具也太好用了
  17. JAVA Applet——绘制心形曲线
  18. 【Javascript】【视频录制】通过video标签和canvas实现视频截图录制和下载
  19. 市面上主流编辑器介绍(2021/05/20)
  20. USB Type-C 转音频+快充方案简介

热门文章

  1. 专升本第七部分 计算机网络基础与网页设计
  2. Amazon软件开发工程师面试题
  3. Windows常见基本进程八:wuauclt
  4. 【Win7快速清理痕迹】
  5. linux是基于什么的开源操作系统,什么是开源操作系统
  6. 史上最简单的word文档docx文档解密方法,忘记word文档docx密码怎么办?
  7. 数字计算机如何分类 依据是什么,计算机如何分类?
  8. signature=e7411d00c74ac359f20083a015dc6ea9,MS12-020:遠端桌面的弱點可能會允許遠端程式碼執行:2012 年 3 月 13 日...
  9. 零基础玩转树莓派(六)—遥控小车
  10. nginx 区分手机浏览器和pc浏览器