腾讯创新俱乐部2019年招新笔试试题

 

[1] 小宗学长正在努力学习数论,他写下了一个奇怪的算式:

\[2019^{2018^{2017^{\dots^{2^1}}}}
\]

算式的结果一定很大,所以他只让你求出这个数的后三位,聪明的你能帮帮小宗学长吗?

提示: \((20)19^5\) 结果后三位为 \(099\)

 

[2] 腾讯的吉祥物想给自己造一套海景别墅,可他自己太懒了,于是抓了一批壮丁来造房子,他要求那些壮丁必须七天造好房子,否则就封他们 \(QQ\) 号,不过可爱的吉祥物很讲道理,他决定拿金条当报酬。吉祥物寻思着每天给工人们发 \(\frac17\) 的金条这个想法不错,可我们得原谅吉祥物实在是太懒了,只想给金条切两刀,请问吉祥物该怎么切金条才好呢?

 

[3] \(dyx\)学长带着2颗鸡蛋爬上了一栋100层的大楼,现在已知一个鸡蛋从第 \(k\) 层及以上的楼层落下来会摔破,在第 \(k\) 层以下的楼层落下则不会摔破。他想知道在最坏情况下,最少扔多少次鸡蛋才能确定 \(k\) 的大小。

 

[4] 一群吉祥物表演杂技走钢丝,钢丝长50米,从东向西看,吉祥物们分别分布在钢丝的\(4\)米、\(17\)米、\(19\)米、\(28\)米、\(44\)米处。表演开始时,吉祥物们同时以 \(1m/s\) 的速度向左或向右走,两只吉祥物相遇时,则同时掉头往反方向走,走到钢丝尽头则被热气球接走。考虑所有情况,最晚被接走的吉祥物在钢丝上停留的最长时间可能是多少?对于一般情况,给定 \(n\) 只吉祥物的初始位置坐标 \(x_1, x_2, x_3, \dots, x_n\) ,吉祥物被接走的最早和最晚时刻分别在什么时候?

 

[5] 某高校举办三行情书大赛,数学系一男生浪漫的写道:

高斯拿走了我的尺规 / 我只好 / 徒手为你画眉

现在假设你高冷的数学女神给你一个圆规,并在纸上画了两个点 \(A\) 和 \(B\) ,你能想办法只用圆规作出线段 \(AB\) 的中点 \(C\) ,博她开心一笑吗?

提示:先作出点 \(D\) ,满足 \(\vec{AD} = 2\vec{AB}\)

 

[6] 俱乐部主席箱箱学长最近很想玩游戏,于是他决定和你一起玩,游戏是这样的:他带来了一堆糖果,两个人轮流从其中拿走一定数量的糖果,拿走最后所有糖果的人为赢家,不过得遵循如下规则:

  • 第一次取不能取完,至少取\(1\)颗
  • 从第二次开始,每个人取的糖果数至少为\(1\),至多为对手刚取的糖果数的两倍

现在让你开始先拿糖果,如果你赢了就能获得全部糖果,输了的话箱箱会收回他的全部糖果。

如果桌上摆着 \(13\) 颗糖果,你会来尝试挑战吗?如果糖果数量为任意正整数 \(n\),你能想出赢得全部糖果的必胜方案吗?

 

[7] 好奇的周队发现了一个神奇的\(22\)位数,它的个位数是\(7\)。当她用\(7\)去乘这个\(22\)位数时,发现它的积仍然是个\(22\)位数,只是个位数的\(7\)移到了第一位,其余\(21\)个数字的排列顺序还是原来的样子。请问这个神奇的\(22\)位数是多少?

提示:这道题如果用字母来代表数字,列成算式是:

\(ABCDEFGHIJKLMNOPQRSTU7×7=7ABCDEFGHIJKLMNOPQRSTU\)

 

[8] TIC里有位大佬,每次在群里出现时所有人都会惊呼:“zk大佬来水群了!!!”,但是wzk是一个非常低调的大佬,他不希望群里一堆菜鸡吹捧自己。于是他以大佬的身份宣布凡是在群里讨论wzk的人(每次提到wzk必是一句完整的“wzk!wzk!wzkNB!”)都会被他用小本本记住。那么问题来了,wzk又是怎么快速察觉到有人讨论他呢?(此题假设TIC群里所有的话都是由字母和符号构成)

请写出用计算机快速判断是否讨论了wzk的方法。

例如:判断wzkwzk!!wzawzk!wzk!NBwzk!!wzk!wzk!wzk!wzkNB两句话中是否谈及wzk(计算机判断字母或者符号是否相同只能一个一个对比)

 


腾讯创新俱乐部2019年招新笔试答案

 

问题1

\[099^{10} = (100-1)^{10} \equiv 1 \text{ mod } 1000\\
2019^{50} \equiv 1 \text{ mod } 1000
\]

​ 现在问题转化为求 \(2018^{2017^{\dots^{2^1}}}\) 对 50 取余的结果

笔算过程:

19的幂的后三位数周期是50,2018的幂模50周期是4。

2017模4等于1,从1到2016那些数都没用。

19的18次方模1000等于841,这就是答案。

 

代码实现:

欧拉定理降幂公式 当\(B \ge \varphi (C)\) 时, \(A^B \% C = A^{(B\% \varphi(C)) + \varphi(C)} \% C\)

递归计算得到结果

typedef long long ll;
const int maxn = 3000;
int pri[maxn], tot;
bool vis[maxn];
int phi[maxn]; // 欧拉线性筛
void getPhi(int n) {
vis[1] = 1;
phi[1] = 1;
for(int i=2;i<=n;i++) {
if(!vis[i]) {
pri[++tot] = i;
phi[i] = i-1;
}
for(int j=1;j<=tot && i*pri[j]<=n;j++) {
vis[i*pri[j]] = 1;
if(i%pri[j]==0) {
phi[i*pri[j]] = pri[j] * phi[i];
break;
} else {
phi[i*pri[j]] = phi[pri[j]] * phi[i];
}
}
}
} // 快速幂求 a^n % p
ll powmod(ll a, ll n, ll p) {
ll res = 1;
while(n) {
if(n&1) res = res * a % p;
a = a * a % p;
n >>= 1;
}
return res;
} ll f(ll a, ll p) {
if(p==1) return 0;
if(a==1) return 1; ll exp = f(a-1, phi[p]) + phi[p];
return powmod(a, exp, p);
}
// getPhi(2019)
// f(2019, 1000) ==> 841

 

问题2

​ 分为 \(1\over7\),\(2\over7\) 和 \(4\over7\) 三部分。

 

问题3

方法一:

找规律

设 \(f[n]\) 表示 \(n\) 层楼,最少扔鸡蛋次数。

\(f[1] = 1\)

\(f[2] = 2, f[3] = 2\)

$ f[4] = 3, f[5] = 3, f[6] = 3$

$ f[7] = 4,f[8] = 4 ,f[9] = 4 ,f[10] = 4$

\(\dots\)

于是 \(f[100] = 14\)

 

方法二:

设 \(f[n][k]\) 表示 \(n\) 层楼,\(k\) 个鸡蛋情况下找到答案的最少扔鸡蛋次数。

显然,只有一个鸡蛋时,必须从低层往高层逐层试验,有

\[f[n][1] = n
\]

有两个鸡蛋时,第一次先从某一层 \(i\) 扔下,如果碎了,就只剩一个鸡蛋,此时答案为 \(1 + f[i-1][1]\);

没有碎的话,问题相当于求解 \(f[n-i][2]\) 。最坏情况下,我们要取两者的最大值为试验次数。

最优解为 \(i\) 取 1~100 所有尝试的最小值。

所以

\[f[n][2] = min(f[n][2], 1+max(f[i-1][1], f[n-i][2]))
\]

\[f[n][2] = min(f[n][2], 1+max(i-1, f[n-i][2]))
\]

\(f[0][2] = 0\) , \(f[1][2] = 1\) , \(f[2][2] = 1\) ,… ,递推得到\(f[100][2]\) 。

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf = 1000000;
int dp[110][5]; int f(int n, int k) {
if(n==0) return 0;
if(k==1) return n;
if(n==1) return 1;
if(dp[n][k]!=-1) return dp[n][k]; int ans = inf;
for(int i=1;i<=n;i++) {
ans = min(ans, 1 + max(f(i-1, k-1), f(n-i, k)));
}
return dp[n][k] = ans;
} int main() {
memset(dp, -1, sizeof(dp));
cout<<f(100, 2)<<endl;
return 0;
}

 

问题4

​ 两只吉祥物相遇时同时掉头可视为它们穿过对方继续前进,故离另一端最远的吉祥物在钢丝上停留的时间最长。即,例如当位于4米处的吉祥物一开始向西走,其它吉祥物一开始向东走时,在钢丝上停留最久的吉祥物时间可能是(50-4)/ 1 = 46s。

​ 找出最小的 \(x_i\) 和最大的 \(x_j\) ,ans1 = min( \(x_i\) , 50 - \(x_j\) ),ans2 = max( 50 - \(x_i\) , \(x_j\) )

 

问题5

​ 以 D 为圆心 ,AD 为半径画圆,与圆 A 交 E, F ;

​ 以 E 为圆心, EA 为半径画圆, 以F为圆心,FA 为半径画圆,交点 C 即为所求。

证明:

​ \(\triangle ACE\) 相似于$ \triangle AED$ \(\Rightarrow\) \(AC \cdot AD = AE\cdot AE\) \(\Rightarrow\) \(AC = {1\over 2} AB = {1\over 2} AE\)

问题6

​ 斐波那契博弈,当糖果数量为斐波那契数时,先手必败。

\[\begin{align}
& Fib[0] = 0, Fib[1] = 1\\
& Fib[n] = Fib[n-1] + Fib[n-2], n>=2
\end{align}
\]

​ 证明略。

 

问题7

​ 由低位往高位计算。

​ 答案:1014492753623188405797 * 7 = 7101449275362318840579

ans = '7'	# 结果
add = 0 # 进位
now = 7 # 当前位 for i in range(1, 22) :
now = now*7 + add
add = now // 10
now = now % 10
ans = str(now) + ans res = ('7'+ans)[0:22]
if int(ans)*7 == int(res) :
print('%s * 7 = %s' % (ans, res))

 

面试得到的新方法:

\[(10*x + 7)*7 = 7*10^{21}+x
\]

解得

\[x = \frac{7*10^{21}-49}{69} = 101449275362318840579
\]

所以

\[ans = 10*x + 7 = 1014492753623188405797
\]

 

问题8

​ 字符串匹配,KMP算法 / 字符串哈希

 


(END)

XDTIC2019招新笔试题 + 官方解答的更多相关文章

  1. ACM_招新笔试题系列——买包子

    招新笔试题系列——买包子 Time Limit: 2000/1000ms (Java/Others) Problem Description: 小华刚到大学,一天早上她替她室友买早餐,一共要N个包子. ...

  2. Microsoft 2013校园招聘笔试题及解答

    Microsoft 2013校园招聘笔试题及解答 题目是自己做的,求讨论.吐槽.拍砖 1.      Which of the following callingconvension(s) suppo ...

  3. Microsoft2013校园招聘笔试题及解答

    继续求拍砖!!!! 1. You are managing the database of a book publichser, you currently store the book orders ...

  4. PayPal2019春招实习生笔试题的某一题

    题目简单描述:给你n个点的坐标(x, y),均为浮点数. 如果任意两个点之间的欧几里得距离小于给定的一个浮点值,则认为这两个点之间有关联,并且关联具有传递性,总之就是尽可能扩大一个集合. 输入: d ...

  5. 2016最新Java笔试题集锦

    更新时间:2015-08-13         来源:网络         投诉删除 [看准网(Kanzhun.com)]笔试题目频道小编搜集的范文“2016最新Java笔试题集锦”,供大家阅读参考, ...

  6. 2018春招-今日头条笔试题-第一题(python)

    题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 要想得到输入的数字列中存在相隔为k的数,可以将输入的数字加上k,然后判断其在不在输入的数字列中即可. #-*- cod ...

  7. 【笔试题】精选30道Java笔试题解答

    转自于:精选30道Java笔试题解答 精选30道Java笔试题解答 1. 下面哪些是Thread类的方法() A. start() B. run() C. exit() D. getPriority( ...

  8. 关于完整解答Leo C.W博客中名为“我们公司的ASP.NET 笔试题,你觉得难度如何”的所有题目

    关于完整解答Leo C.W博客中名为“我们公司的ASP.NET 笔试题,你觉得难度如何”的所有题目,请大家鉴定,不足之处,敬请指教! 第1到3题解答如下: public enum QuestionTy ...

  9. java面试题—精选30道Java笔试题解答(二)

    摘要: java面试题-精选30道Java笔试题解答(二) 19. 下面程序能正常运行吗() public class NULL { public static void haha(){ System ...

随机推荐

  1. js 将字符串当作js表达式执行方法

    听同事说了一个需求.他有一个数据对象obj,接口会给他返回一个索引key,这个key长度不固定,根据这个key去修改obj对应的值. 举个例子: let obj={"level1" ...

  2. (转)浅谈C中的malloc和free

    原帖及讨论:http://bbs.bccn.net/thread-82212-1-1.html 在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数 ...

  3. CSS:CSS 表格

    ylbtech-CSS:CSS 表格 1.返回顶部 1. CSS 表格 使用 CSS 可以使 HTML 表格更美观. Company Contact Country Alfreds Futterkis ...

  4. shell 删除超过30天的文件和目录

    #!/bin/bash location="/root/sqlbak/" find $location -mtime +30 -type d |xargs rm -rf #删除目录 ...

  5. python接口自动化(delete请求)

    python接口自动化(delete请求) 一.delete请求的目的:删除资源 二.应用 导包:import requests 调用delete方法:requests.delete(url) 获取响 ...

  6. python--包的导入

    1,包 定义:把解决一类问题的模块放在同一个文件夹里 导入语法:在import    from...import导入语句中(而不是在使用时)遇到带点的 本质:就是一个包含__init__.py文件的目 ...

  7. ant design 两个tabs如何同时切换

    假设界面上有两个地方用到了同一个tabs,但是切换其中一个tabs,另一个tabs并不会同时切换,因为只是在其中一个tabs上调用了onChange,所以需要用到activeKey动态地设置tabs的 ...

  8. 2018-9-30-dotnet-core-通过修改文件头的方式隐藏控制台窗口

    title author date CreateTime categories dotnet core 通过修改文件头的方式隐藏控制台窗口 lindexi 2018-09-30 18:36:43 +0 ...

  9. docker Dockerfile学习---构建mongodb环境

    1.创建项目目录并上传包 mkdir centos_mongodb cd centos_mongodb .tgz 2.编辑配置文件 vi mongodb.conf dbpath = /data/usr ...

  10. Tools: windbg 使用指南

    windbg使用 符号表C:\Symbols; SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols 系统变量_NT_SYMBOL_PAT ...