9.16 腾讯技术笔试编程题代码
腾讯技术类三道题:
#include <bits/stdc++.h>
using namespace std;
int main() {
int T; cin >> T;
while(T --) {
int A, B, C;
cin >> A >> B >> C;
int Z = A - B;
int ok = 0;
for(int x = 0; x < 1000; x++) {
for(int y = -1000; y < 1000; y++) {
if(x * Z + y * A == C) { ok = 1; break; }
}
}
cout << (ok == 1 ? "YES" : "NO") << endl;
}
return 0;
}
// 第三题 n * A = m * B + C,注意这里的 C 很小,直接枚举即可
#include <bits/stdc++.h>
using namespace std;
int mm[1024][1024];
int visit[1024];
int out[1024];
int in[1024];
int n, m;
int start;
void dfs(int i) {
visit[i] = 1;
if(i != start) out[start] ++;
if(i != start) in[i] ++;
for(int k = 0; k < n; k ++) {
if(mm[i][k] == 1 && visit[k] == 0) dfs(k);
}
}
int main() {
cin >> n >> m;
for(int i = 0; i < m; i ++) {
int u, v; cin >> u >> v;
mm[u - 1][v - 1] = 1;
}
for(int i = 0; i < n; i++) {
memset(visit, 0, sizeof(visit));
start = i; dfs(start);
}
int cc = 0;
for(int i = 0; i < n; i ++) { if(in[i] > out[i]) cc ++; }
cout << cc << endl;
return 0;
} // 第二题 计算图的度 需要注意可能有环且图是有向图 (开始没注意),设置 visit 向量记录访问情况 dfs #include <bits/stdc++.h>
using namespace std;
int64_t i, j;
int prim[2000005];
int64_t ver[2000005];
int main() {
int64_t cc = 0;
int64_t n; cin >> n;
int64_t m = sqrt(n + 0.5);
for (int64_t i = 2; i <= n; i++) {
if(!prim[i]) {
ver[++cc] = i;
if(i <= m) { for (int64_t j = i * i; j <= n; j += i) prim[j] = 1; }
}
}
int64_t ans = n + 1;
for(i = cc; i >= 1; i--) {
int64_t u = ver[i];
for (j = 1; j * u <= n; j *= u);
ans = max(ans,(n / j + 1) * j);
}
cout << ans << endl;
return 0;
}
// 第一题 以前做过 网上也有题解
#笔试题目##腾讯#
查看9道真题和解析