洛谷愚人节\(2019\),作出来\(3\)题,\(rank\)垫底;
洛谷愚人节\(2020\),作出来\(9\)题,\(rank\ 1\);
牛客愚人节\(2020\),作出来\(9\)题,\(rank\ 11\);
\(CF\)愚人节\(2020\),作出来\(6\)题(\(H\)题没\(rush\)出来),\(rank\ 91\)。php
在线加密解密
在线二维码解码
文字翻转
维吉尼亚密码加密解密
https://blog.csdn.net/wswokao/article/details/80856235python
\(codeforces\)比赛
比赛连接:April Fools Contest 2020
比赛现场:本人共\(AC\)了\(6\)题,\(H\)题现场没调出来。c++
好吧,连个题面都没有~
其实看看标题就知道,本场比赛\(unrated\)。
因此输出\(no\)便可。算法
这种打油诗老套路了吧。
把每一行的第一个字符串起来,就是\(two\ factors\)。
因而,咱们只须要将\(n\)表示成\(n=n_1\times n_2\),而后输出\(n_1\)和\(n_2\)便可,中间不要加空格。app
这标题好像读不通,咱们调整一下语序:... and they lived happily ever after。
这样子好像顺了不少,而后\(0\le a\le 63\),这里恰好有\(6\)个单词,不难想到是一个\(6\)位的二进制。优化
看到Axxxxxx第一反应是\(oeis\),可是这么多数列我咋打表啊...
然而,这是出题人故意恶搞的...
实际上你只须要判断奇偶性便可。网站
卧槽,这个图片也太恐怖了。
说下个人作法:
先把这种图片放到\(mspaint\),而后给外层用颜料桶染成红色。
再调用\(python\)的\(PIL\)库,识别色块是白色仍是红色,打印出一个\(0/1\)矩阵。
最后就是,这个\(n\)和\(m\)要交换一下。。。ui
\(elementary\)再结合样例,不难发现这是考元素周期表。
考虑\(dp\),便可\(AC\)本题。
我打了前\(118\)个元素的表,不知道具体要多少,反正一\(A\)也就没管了。加密
这道题的题面是用\(Perligata\)写的一份源代码,若是您设法运行它,您可能会认识到\(TPK\)算法。
以后,您能够本身实现它,也能够在\(RosettaCode\)上查找它。url
#include <bits/stdc++.h> using namespace std; int a[15]; int main() { for (int i = 0; i <= 10; i++) { cin >> a[i]; } cout << fixed << setprecision(2); for (int i = 10; i >= 0; i--) { int v = a[i]; double a = sqrt(abs(v)); double b = v * v * v * 5; double res = a + b; if (res > 400) cout << "f(" << v << ") = MAGNA NIMIS!" << '\n'; else cout << "f(" << v << ") = " << res << '\n'; } return 0; }
这个语言真是有病。。编译错误会给你报错:WHAT THE FUCK DID I DO WRONG...
看到标题是\(It's\ showtime\),咱们想到是\(Arnoldc\)(
而后这个屑玩意,整个源代码都在口吐芬芳,我也是无可奈何才写的。。
IT'S SHOWTIME HEY CHRISTMAS TREE read YOU SET US UP @NO PROBLEMO GET YOUR ASS TO MARS read DO IT NOW I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY HEY CHRISTMAS TREE ans YOU SET US UP 1 HEY CHRISTMAS TREE n YOU SET US UP read HEY CHRISTMAS TREE mod YOU SET US UP read GET TO THE CHOPPER n HERE IS MY INVITATION n HE HAD TO SPLIT 1000 ENOUGH TALK GET TO THE CHOPPER mod HERE IS MY INVITATION mod I LET HIM GO 1000 ENOUGH TALK HEY CHRISTMAS TREE is YOU SET US UP @NO PROBLEMO STICK AROUND is GET TO THE CHOPPER ans HERE IS MY INVITATION ans YOU'RE FIRED n ENOUGH TALK GET TO THE CHOPPER ans HERE IS MY INVITATION ans I LET HIM GO mod ENOUGH TALK GET TO THE CHOPPER n HERE IS MY INVITATION n GET DOWN 2 ENOUGH TALK GET TO THE CHOPPER is HERE IS MY INVITATION n LET OFF SOME STEAM BENNET 1 ENOUGH TALK CHILL TALK TO THE HAND ans YOU HAVE BEEN TERMINATED
比赛连接:洛谷愚人节 2019
比赛现场:本人\(rank\ 1\)。
把这一团乱码放入\(base64\)解码器,跑出来便可。
解密后:
排名是\(11\),\(4\),\(5\),\(14\)的人获奖。
把这张图片以\(bmp\)格式下载下来,用\(notepad\)打开,而后你就会看到:
出题人:chen_zhe,Owenowl,Flierking
这个是关于台风的……
百度德沃夏克分析法,百科的图片就是答案。
其实\(dis_{i,i}\)恒为\(0\)。因此\(\sum_{i=1}^{n}dis_{i,i}=0\),输出\(0\)便可。
这道题文件不超过\(2MB\),可见这两个大数的位数可能很大。
因此须要\(fft\)优化,固然正常人确定都用\(python\)爆踩过去了。
把这些单词放进\(Codeforces\)题库里查询题目的编号(例如\(512C\),那么就是\(512\)),便可获得答案。
把样例2的三个单词拿去查询,输出答案便可。
咱们观察红石,而后还有拉杆,因此能够表示成\(0/1\)。
红石暗的时候是\(0\),亮的时候是\(15\)。
咱们须要输出红石的状态,所以只要输出\(T/F\)便可。
然而这道题咱们须要猜金块和铁块分别表明什么。
通过屡次尝试,便可获得正确答案。
直接把题目中的英文名,空格用下划线代替掉,便可查到经过数。
答案为
1. true 2. false 3. false 4. false 5. true 6. true 7. true 8. true 9. false 10. false 11. false 12. true 13. false 14. false 15. true 16. true 17. false 18. false 19. true 20. true
咱们将这些问题写成\(01\)串拼凑起来。
注意到题目里有一个~,这是位运算的取反符号。
因此把这个\(01\)串\(0\)变\(1\),\(1\)变\(0\)便可。
采用盲文字母表,发现每一个字母表明的数字意义就是红点的个数。
这上面有一个二维码。因而咱们找在线二维码解码,而后能够获得一个解密文。
提交上去,\(boom\),\(WA\)了!
愚人节当天早上,在讨论版里有人提到了\(sha512\)加密,因而咱们赶快把解密文每一个换行符替换成空格,跑一个哈希,便可获得答案。
咱们分析知:\(A(attack),B(back),S(stop)\),\(attack\)表示对方血量\(-1\),\(back\)表示本身回满血,\(stop\)表示这一回合啥也不干。
\(Codeforces\)比赛
比赛连接:April Fools Contest 2017
显然这是一个数列,咱们去\(oeis\)上去搜索\(joke\ numbers\),因而能查到一个史密斯数。
将这个数列打表打出来便可。
A006753
幼儿园小朋友估计也只会数圈圈吧,因此这道题就是让你把读入的数给转换成\(16\)进制,而后数圈圈的个数。
\(codeforces\)比赛
比赛连接:April Fools Contest 2012
将\(b\)数位翻转,而后计算\(a+b\)便可。
int a, b; int main() { scanf("%d%d", &a, &b); int _b = b; b = 0; while (_b > 0) { b = 10 * b + _b % 10; _b /= 10; } printf("%d\n", a + b); return 0; }
看到\(star\)仍是个数列,果断去\(oeis\)上查找\(star\)。
不难找到是A003154.
int n; int main() { cin >> n; cout << 6 * n * (n - 1) + 1 << '\n'; return 0; }
这个切蛋糕的过程是来迷惑你的,其实它给了你\(a_1,a_2,...,a_n\),让你计算\(\sum_{i=1}^{n} i \times a_i\)。
const int N = 10005; int a[N], n, ans; int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); ans += a[i] * i; } printf("%d\n", ans); }
输入一个\((1-5)\)的数,输出一个\((1-3)\)的数。
毛估估是\(n \mod 3 + 1\),可是\(WA\)了。
好吧,正确的是\((n \mod 5) \mod 3+1\)。
int n; int main() { cin >> n; cout << (n % 5) % 3 + 1 << '\n'; }
根据报错信息,易知这是INTERCAL语言。
int main() { cout << "INTERCAL\n"; }
看到\(q\)字母单独出现,天然想到是凯撒密码,这个\(q\)对应的是\(a\)。
经解密,咱们得知是求从小到大的第\(n\)个反素数。
反素数的定义是:一个数和它翻转的数不相等且两数均为素数。
const int N = 1000002; vector <int> pr; int vis[N]; void pre(int n) { vis[0] = vis[1] = 1; for (int i = 2; i <= n; i++) { if (!vis[i]) pr.pb(i); for (auto v: pr) { if (i * v > n) break; vis[v * i] = 1; if (i % v == 0) break; } } } int rev(int x) { int y = 0; while (x > 0) { y = 10 * y + x % 10; x /= 10; } return y; } int n; int main() { pre(1e6); scanf("%d", &n); for (rint i = 2; ; i++) { if (!vis[i] && !vis[rev(i)] && rev(i) != i) { n--; if (n == 0) { printf("%d\n", i); exit(0); } } } }
这道题的脑洞真的是大,,,给定你的三个数分别是\(f_0,f_1,n\)。
递推的公式为\(f_n=f_{n-1}+f_{n-2}\),求\(f_n\)。
嗐,这谁想获得~
注:其实不用开\(long\ long\),极限数据答案为\(218920\)。
const int N = 25; ll f[N]; int n; int main() { scanf("%lld%lld%d", &f[0], &f[1], &n); for (int i = 2; i <= n; i++) { f[i] = f[i - 1] + f[i - 2]; } printf("%lld\n", f[n]); return 0; }
咕咕咕