竞赛讨论区 > 【题解】牛客2020年愚人节比赛
头像
王清楚
编辑于 2020-04-01 22:03
+ 关注

【题解】牛客2020年愚人节比赛

题解赛后在本贴更新~
本场比赛出题团共有7位不愿意透露姓名(怕被毒打)出题人
(所以可能就由我代发题解了,

希望大家玩的开心~

出题人1:某不知名的J姓出题人:我只出了一个题,别打我。
出题人2:
出题人3:
出题人4:不愿意透露姓名
出题人5:
出题人6:我答疑就全问的正式问题 想和选手聊天
出题人7:可爱即正义!

以下是题解~

A rand36

欧皇概率检测(坑罚时题

下面是各数字的概率

0-9 10/37
10-19 10/37
20-29 10/37
30-36 7/37
其他 0

B 寻宝游戏

暗号:宝藏,被隐藏在第12层,光标所指向藏宝图的位置。首先层的英文是"floor"也就是12F,然后图片上面的路径按顺序组成"src",所以按F12打开浏览器控制台,然后选中图片查看图片地址"stc=...",由于输出描述中明确表示没有=,所以等于号后面的就是答案。

C 老铁,安排上了!

老铁,不难发现,题意即求用9键手机按出每一行字符串所需要的按键次数,模拟即可。(所以说只出了一个题不难吧?Σ( ° △ °|||)︴)

D 神奇的字母

观察到样例输出为:“一个字符,表示神奇的字母(范围从'a'到'z',保证小写)。”
所以输出这一句话就可以了。

E return 1;

首先说一下题意。记一个正整数x的所有因子(不包括它本身)之和为f(x)
那么这道题要输出x迭代至1的次数。
当然有的数永远无法迭代至1,如完全数(f(x)=x)、相亲数(f(x)=y,f(y)=x)等。
这种情况则输出infinity。

意味着它们在“1”以外,找到了新的归宿。。(逃
std

F 抬头,答案在天上

答案在天上,所以请抬头,提示已经很明显了

首先扫一遍确定没有链接

于是这个字符串一定出在比较靠上的位置

看样例

既然是抬头,所以要从下往上看,于是看到了,猜测网址

于是看你的浏览器链接地址,有

或者

两种情况

再看数据范围,前面正整数加粗在这里暗示链接的加粗部分

c为自然数意味着字符串是从开始计数

所以长度为,上面链接长度为的是后者,放到样例中验证正确

于是这个字符串就是

#include<bits/stdc++.h>

using namespace std;
char qwq[100]="ac.nowcoder.com";
int t;
int n;
int main () {
    scanf("%d",&t);
    while(t--) {
        scanf("%d",&n);
        printf("%c\n",qwq[n]);
    }
    return 0;
}

G 低头,答案在地下

题目说输出链接所以在题面里找链接。

而输入输出格式都是引用格式的,所以无法存在链接。

而答案在地下,所以点击题目描述最末尾的句号然后输出那个链接就行。

H 圆

尽可能不择手段多的放,所以我们可以将圆重叠。

于是最终可以塞入直径为正方形边长的圆。

输出 即可。

I 牛客搜索题

备注里提示:

数据纯键盘手打。

键盘打就可以想到是根据数字打过去的。

所以我们可以想到将@!(&&$!#(转化为219774139这串数字。

然后又有:

建议参赛用户使用搜索算法。

所以我们要搜索编号为219774139的用户

打开个人主页把链接里的数字改成上述数字就行。

https://ac.nowcoder.com/acm/contest/profile/219774139

题目描述是用二号字体这种格式写的,于是我们就想到是副标题。(只打了两个#,没渲染出来不要在意)

再对应输出:

一串大写字母。

于是输出GSC即可。

J 签到题

出题人是某不知名菜鸡所以匿了

题目名字来源:因为题目顺序是按题目提交先后排序的 我预测到别的出题人可能会出一些根本做不出来的毒瘤题 所以打算出一道 签到题 但是发现自己提交晚了排在了后面会被人误以为是毒瘤题 为了让大家快速签到并且避过前面各种duliu题所以把名字改成了 签到题 来帮助大家快速获得抽奖机会。

首先我们发现第二行疑似是BASE64加密:

VmtaYVUxRnJOVlppUlZaVFYwZG9UMVpVUWtkT1JsSldWV3RLWVUxRVJUSlZNV1JyVkRGS1NHUkhOVlZoTVVwMVYycEJNVkpXYjNsYVJUbFRVakpTZFZaSGRGTmliRzkzVGxWV1lVMXRVbEJWYTJScllteFNjbFZ0TldGTlJGWldWbXhSZDFCUlBUMD0=

解密五次后可以得到:

109 111 100 32 49 48 48 48 48 48 48 48 55

不难发现很像ASCII码 转化后可以得到:

mod 100000007

注意是

然后观察第一行 我们发现备注中有 不难想到是 AES 加密(作者水平低下只知道这几种加密方式)

经过枚举可以发现

f[n]=4f[n-1]+255f[n-2]+f[n-3]

结合样例 可以发现题目实际上是:

f[1]=2
f[2]=4
f[3]=114514
f[n]=4f[n-1]+255f[n-2]+f[n-3]
求 f[n] mod 100000007

矩阵快速幂即可。

其实本来想用这个解密出的式子的前几千项搞一个新的递推式的 但是考虑到这是一道签到题所以就没有加

K 四万像素五角星

有多种方法可画这个五角星,第一种可以先画一个圆,然后取五点,顺次链接五个点,擦除刚才画的圆,然后将五角星凸实。第二种方法是利用三角函数控制角度,直接画出这个五角星。
std

L positive-interger

实际上是小学生都会的高中数学题

先讲正解

先看数列

下面设 ,

时,

时,有

于是原式变成了

两边同除就变成了

于是数列是以为首项,为公差的等差数列,

所以

又因为

所以

然后看数列

,

于是就有

带回原式有

化简之后得

两边同时配凑(初中生基本常识

又因为样例中给出了所以

所以

数列是以为首项,为公比的等比数列

又因为

所以

所以

这玩意只有在时是,否则是一个之间的数

所以其他情况下取整之后为

所以正解:

#include<bits/stdc++.h>
using namespace std;
int main() {
    int n;
    scanf("%d",&n);
    printf("%d",n==1?1:0);
    return 0;
}
下面说说神仙做法:

先试后试都没过
手动模拟出的答案
于是出答案


全部评论

(44) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐