Java俱乐部社团面试记录
1.申请表
自身能拿出手的太少了,能写在申请表上的除了自己的热情,近乎没有,该打打大大小小的比赛了
2.个人介绍
自己过于紧张,一进门脑子只剩空气了
3.询问个人情况
知识面拓展有点少,问了两个还是三个不知道的名词,且没有将自己的优势展示出来
问:你如果加入俱乐部,每周能拿出多少时间出来呢
答:只要不上课都可以
其实,我现在是这么想的(在回答完之后),学校课程大部分没那么重要,重点在于自己是否认真学习,我的休闲娱乐活动基本只有刷视频,甚至可以每天抽出12个小时。
4.编程题
给了四道编程题,都是leetcode原题,基本都是简单题,交上去回到宿舍之后在leetcode上写都是通过,但是当时的时候实在脑抽,思维完全跟不上私下写题
提交不能得到分数,类似OI赛事
虽然是leetcode原题,但是他没有给leetcode样式的提交类,导致我是写的输入输出,不知道能不能得分
第一题
这个题可以算是竞赛中的签到题,只需要判断最后一位是否为为0即可,注意特判当这个数为0时的值
第二题
一眼质因子分解,怪自己的数论能力太差,场上只想到了统计5的个数,不知道怎么继续算了,最后只写了个O(n)的算法,且会longlong溢出
//错解
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int ans = 0;
long long now = 1;
for (int i = 1; i <= n; ++i) {
now *= i;
while (now % 10 == 0) ++ans, now /= 10;
}
cout << ans << endl;
return 0;
}
正解
[1,n] 中质因子 p 的个数为\(\sum_{k=1}^{\infty} \Big\lfloor\dfrac{n}{p^k}\Big\rfloor\) 而 \(\Big\lfloor\dfrac{n}{p^k}\Big\rfloor=\Big\lfloor\dfrac{\dfrac{n}{p^{k-1}}}{p}\Big\rfloor\)
所以对n每次除以p累加即可
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int ans = 0;
while (n) ans += n /= 5;
cout << ans << endl;
return 0;
}
第三题
入门dp题,不过由于场上没给leetcode式的class类,导致不知道他给不给变量m和n,就这样吧
#include <bits/stdc++.h>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
vector<vector<int>> dp(m, vector<int>(n));
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j) cin >> dp[i][j];
for (int i = 1; i < n; ++i) dp[0][i] += dp[0][i - 1];
for (int i = 1; i < m; ++i) dp[i][0] += dp[i - 1][0];
for (int i = 1; i < m; ++i)
for (int j = 1; j < n; ++j)
dp[i][j] += min(dp[i - 1][j], dp[i][j - 1]);
cout << dp[m - 1][n - 1] << endl;
return 0;
}
第四题
非常简单的快速幂放在了最后一道,可是我不知道的是int类型的最小值取绝对值会超int范围,真·不开longlong见祖宗
#include <bits/stdc++.h>
using namespace std;
double qpow(double x, long long n) {
double ans(1);
for (long long b = abs(n); b; b >>= 1, x = x * x)
if (b & 1) ans = x * ans;
return n < 0 ? 1.0 / ans : ans;
}
int main() {
double x;
long long n;
cin >> x >> n;
cout << qpow(x, n) << endl;
return 0;
}
5.总结
- 搞得稀碎
- 菜菜菜
- 多练