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; }// 第一题 以前做过 网上也有题解
#笔试题目##腾讯#