欢迎光临散文网 会员登陆 & 注册

U192224 题解【移植】

2023-05-28 18:23 作者:cff_0102  | 我要投稿

返回题目;查看排行;迷惑行为;比赛链接;博客的更好看(?);云剪贴板的更好渲染(?);赛后总结帖

借楼宣传新解密。

U192224 第五步(最后一步)——U192224 题解

解密题目:通过进入U57189865001,解出这道黑题。

第一步

先看题面,进入U57189865001,而链接指向的是一个分解质因数网站。那么我们肯定理所当然的把 5718986500157189865001 丢进分解质因数的程序内。57189865001=208697\times27403357189865001=208697×274033。既然要进入U57189865001,那么第一步应该就是U208697和U274033了。通过这两道题,就能知道第一和第二测试点的内容。

源代码 - C++

复制

if(n==1){    cout<<"U208697 in=1"; }if(n==2){    cout<<"in=02 U274033"; }

第三个测试点让我们计算出 R17492424 的分数,然而传送门中跳转的是 R69969696。不难发现 17492424\times4=6996969617492424×4=69969696,所以猜测 R17492424 的分数也是 R69969696 的四分之一。R69969696 的分值是 415396415396,那么 R17492424 的分值应该是 415396\div4=103849415396÷4=103849

第四个测试点需要了解此质因数分解工具。经过尝试可以发现网站中的表格和第四测试点的表格第一行完全一样。Factor:质因数。Power:原数分解质因数后此质数的次数。Length:此质数的位数。根据这个破解表格,题号应该是 2^4\times43\times283=19470424×43×283=194704。看U194704的说明/提示,AC 代码输出为 00

源代码 - C++

复制

if(n==3){    cout<<"103849"; }if(n==4){    cout<<"0"; }

在U208697里面Ctrl+A(当然如果你用了一些背景的话可以直接看到),发现第一行写着“看到这可在另一边找第二步:#5\&#9会再输入一可见字符串,直接输出得分”,那么:

源代码 - C++

复制

if(n==5){    string s;cin>>s;    cout<<s; }if(n==9){    string s;cin>>s;    cout<<s; }

第二步

从上面我们可以得出第二步不在U208697找,应该在U274033找。向下翻可以找到第二步提示。根据提示,我们应该 F12 找页面上的所有 44(或者复制源码后 Ctrl+F 找 44),可以发现在“当输入为 44 时”的 44 后面有一句话:

恭喜你找到第二步解密的传送门!什么?少几个测试点吗?可以先试试提交已知的测试点数据,全部解密完成后再把细节上没找到的测试点数据找回来。第二步从U转入T,题号为T306955。

进入该题,就能知道第 77 测试点输出什么了。

源代码 - C++

复制

if(n==7){    cout<<"T306955"; }

第 88 个测试点的输出是: P1713942118457604494664148656735633546331485287544841923437 中符合难度的题目的所有样例输出之和。根据提示,知道应该将这个超大的数字再次丢进分解质因数计算器内,得出 1713942118457604494664148656735633546331485287544841923437=1069\times1117\times1721\times2273\times2381\times3049\times3533\times4349\times4931\times5051\times5987\times6263\times6529\times7079\times8677\times87831713942118457604494664148656735633546331485287544841923437=1069×1117×1721×2273×2381×3049×3533×4349×4931×5051×5987×6263×6529×7079×8677×8783。按照惯例,在前面分别加上 P,然后再一个一个看是不是绿题,就可以算出来答案。经检验,P1069和P3049都是绿题,答案就是 -1+2+210=2111+2+210=211

源代码 - C++

复制

if(n==8){    cout<<"211"; }

第三步

怎么解到这里就没有头绪了?啥都没有给啊。无聊随便看看,比如这个整活赛团队是咋样的?

这里没有任何信息。

?我看看这团出的题有啥。一堆第二步……还有一个第三步,诶,第三步?!这不就到了吗?

源代码 - C++

复制

if(n==6){    cout<<"U260054"; }

最下面说明提示先记着:39,然后康康U260054又有啥。什么从左到右啊啊?看不懂,先不看。先把最下面的记了:39 1t。这题测试点保证正确输出是第 1414 测试点的输出?那……是不是可以按照你谷特有の错误提示来凑答案?

源代码 - C++

复制

cout<<"1111111111111111111111111111111111111";//Wrong Answer.wrong answer On line 1 column 1, read 1, expected 8.cout<<"8111111111111111111111111111111111111";//Wrong Answer.wrong answer On line 1 column 2, read 1, expected 3.cout<<"8311111111111111111111111111111111111";//...cout<<"83B44A59610C45F57CDA4E6736A10D7F11111";//Wrong Answer.wrong answer Too long on line 1.cout<<"83B44A59610C45F57CDA4E6736A10D7F";//Accepted, 得分 50.ok accepted

这样就成功出了答案。

源代码 - C++

复制

if(n==14){    cout<<"83B44A59610C45F57CDA4E6736A10D7F"; }

第四步和第 10-131013 测试点

嗯?83B44A59610C45F57CDA4E6736A10D7F?好眼熟……有 3232 位……的 1616 进制码?诶这不 MD5 吗?赶紧解一下是啥。

源代码

复制

md5 解密:U274084

果然是 MD5!进去看看。这样就得到了第 1515 测试点的答案。

源代码 - C++

复制

if(n==15){    cout<<"%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n"; }

从提示,还可以直接看出,第 1010 到 1313 测试点的输出,就是从左到右对应的题目右边的时空限制数字。

源代码 - C++

复制

if(n==10){    cout<<"20"; }if(n==11){    cout<<"58"; }if(n==12){    cout<<"14"; }if(n==13){    cout<<"41"; }

先把说明提示的字符串记下:39 1t 6o,然后进入题目要求进入的www.bilibili.com/read/cv20581441。接着拿到第 1616 点的分数。胜利就在咫尺

康康这个专栏的标题,好像不是刚刚的U274084啊。U274102?这不就能知道第 1717 点的输出了吗?

源代码 - C++

复制

if(n==16){    cout<<"14418502vc"; }if(n==17){    cout<<"17 274102"; }

在专栏中提到,进入云剪贴板就能找到第 1818 点的输出。云剪贴板正常应该是 88 位字符。前面在说明提示找到了 39 1t 6o,U274102底下又有一个 00,拼起来应该就是云剪贴板链接了吧。这样第 1818 测试点的答案就出来了……吗?先看看其他的测试点。

先看第 1919 测试点,很明显要跟P1000的超级玛丽作比较,输出问号覆盖住的字符。这个要是你错了,那先去看看眼睛。当然也能编程求解这题。

源代码 - C++

复制

if(n==19){    cout<<"* #  ...#.#.****# ###--###.....#......##.....#......##.....#......# #-##"; }

第五步和第 1818 测试点

再看看第 2020 测试点。由“永远相信白字”和经验,可以 Ctrl+A,发现白字说第 2020 测试点的输入是 2121,那么再通过输入输出样例得知该测试点输出应为 U57189865001 in=-1

源代码 - C++

复制

if(n==21){    cout<<"U57189865001 in=-1"; }

现在,除了第 1818 测试点以外的其它测试点我们都通过了。最后来看第 1818 测试点。

了解这个网络迷踪的规则之后,点进视频的网页链接,发现这是转载的。再点进简介里面标明的原视频,评论区有一个评论:

up这是哪里?有点像深圳,看这个路灯

up本人回复:

《有点像》

这说明什么?这说明拍摄地点就在深圳。那搜索范围就减小许多了。

那么视频开头就有一个路牌,通过这个路牌,可以大大缩小搜索范围。

源代码

复制

??路(眼力极好的可以看出是侨香路) 欢乐谷     → ????(眼力好的可以看出是波托菲诺) 高尔夫练习场 ------------------- 深南大道 生态广场    ←

cff:锁定这几个点,位置就基本可以在华侨城/欢乐谷一块找了。

但可能有某些人的眼睛刚好不好,没看出来波托费诺,不然就很快出答案了(

所以,我们还需要搞别的信息。

cff:再分析一下视频,视频车辆在一个三岔路口向左前方转,接着没多久沿着一条向左拐两次再向右拐一次,且每次转弯幅度都差不多是 135\degree135° 的双行道路上行驶。画出图片就是这样:

箭头是前进方向,三个圆圈说明这里有一个前往欢乐谷内部的一条道路,路口三个石柱子。这个路线对着华侨城的内部搜一下就能得出答案,如下图(注:从这里开始往后数的第一个图)。通过街景也能看出完全一致。

George:大哥你真牛逼,能看出来 135\degree135°,来说说正常人的解法。

看到了深南大道,可以在地图上搜索。我们可以发现深南大道旁边只有世界之窗一个大建筑物,所以我们交上世界之窗,WA。

但好巧不巧,我们在附近能找到一个地方叫做欢乐谷和旁边的高尔夫球场,刚好和图片匹配。

所以我们猜是附近的华侨城站或者白石洲站,WA。

我们往北翻翻,能发现波托菲诺纯水岸这个地方,波托菲诺好像是视频里的地方?

然后我们注意下,车车拐过三岔路口之后,镜头拍到路牌是**山**,所以直接在附近找这条路,(没啥别的办法),就找到了。

那么就能通过地图找出距离这个路线起点最近的地铁站是什么了。

答案:22 号线(和 88 号线)的侨城北站。

源代码 - C++

复制

if(n==18){    cout<<"Qiaocheng North"; }

std

C++ 代码:

源代码 - C++

复制

#include<bits/stdc++.h>using namespace std;int main(){    ios::sync_with_stdio(false);    int n;cin>>n;    if(n==1){        cout<<"U208697 in=1";    }if(n==2){        cout<<"in=02 U274033";    }if(n==3){        cout<<"103849";    }if(n==4){        cout<<"0";    }if(n==5){        string s;cin>>s;        cout<<s;    }if(n==6){        cout<<"U260054";    }if(n==7){        cout<<"T306955";    }if(n==8){        cout<<"211";    }if(n==9){        string s;cin>>s;        cout<<s;    }if(n==10){        cout<<"20";    }if(n==11){        cout<<"58";    }if(n==12){        cout<<"14";    }if(n==13){        cout<<"41";    }if(n==14){        cout<<"83B44A59610C45F57CDA4E6736A10D7F";    }if(n==15){        cout<<"%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n%%%\n";    }if(n==16){        cout<<"14418502vc";    }if(n==17){        cout<<"17 274102";    }if(n==18){        cout<<"Qiaocheng North";    }if(n==19){        cout<<"* #  ...#.#.****# ###--###.....#......##.....#......##.....#......# #-##";    }if(n==21){        cout<<"U57189865001 in=-1";    }return 0; }

Python 代码:

源代码 - Python

复制

a=int(input())if a==1:    print("U208697 in=1")if a==2:    print("in=02 U274033")if a==3:    print("103849")if a==4:    print("0")if a==5:    print(input())if a==6:    print("U260054")if a==7:    print("T306955")if a==8:    print("211")if a==9:    print(input())if a==10:    print("20")if a==11:    print("58")if a==12:    print("14")if a==13:    print("41")if a==14:    print("83B44A59610C45F57CDA4E6736A10D7F")if a==15:    print("""%%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%%""")if a==16:    print("14418502vc")if a==17:    print("17 274102")if a==18:    print("Qiaocheng North")if a==19:    print("* #  ...#.#.****# ###--###.....#......##.....#......##.....#......# #-##")if a==21:    print("U57189865001 in=-1")

附加题

在U208697里面Ctrl+A,发现“附加题:私信告诉我第5&9测试点的输出即可加5分。”众所周知,这两个测试点会输入应该输出的东西(见第一步解法),应该想办法绕过 SPJ,让错误信息能够显示,并且显示的是输入的字符串(的一部分)。那么这个 SPJ 让 AC 和 WA 的测试点都已经不能显示具体信息了,那还剩什么评测状态?对着这个R70000007看,可以发现只剩 RE 能显示错误信息了。那么就好办了。

源代码 - C++

复制

if(n==5){    string s;cin>>s;    return (int)(s[0]); }//Runtime Error.Program exited with code 115.

因为 (ASCII115) 是 s,所以第五个测试点的输出第一个字符就是 s,以此类推。

源代码 - C++

复制

return s.size();//Runtime Error.Program exited with code 13.return (int)(s[1]);//Runtime Error.Program exited with code 116....return (int)(s[12]);//Runtime Error.Program exited with code 122.

同样对第九个测试点也一样操作,可以得出第五个测试点输出是 sto_snhDL_orz;第九个测试点输出为 sto_cff_orz

赛后总结

link

正片结束

最后来个宣传

凄惨七彩评测

关注奖励将在一天内给出。如果发现没有可以私信说明。

回关号1

回关号2(小号比大号早注册的屑)


U192224 题解【移植】的评论 (共 条)

分享到微博请遵守国家法律