腾讯笔试:后台笔试题吐槽
今天2019.09.20,腾讯后台服务器笔试,5道编程题,全和数字有关,5道题全是数字啊,弄不好就会越界,越界,越界,大数字越界在我这无解😂
贴了代码,大家交流
第一题AC90%,
typedef struct TEST { int N; string strPhone; }STTEST; int nT; cin >> nT; vector<STTEST> vstTests; while (nT--) { STTEST stTest; cin >> stTest.N; cin.get(); getline(cin, stTest.strPhone); vstTests.push_back(stTest); } vector<int> vFlags(vstTests.size(), 0); for (int i = 0; i < vstTests.size(); i++) { bool bFlag = true; for (int j = 0; j < vstTests[i].strPhone.length(); j++) { if (vstTests[i].strPhone.at(j) >= '0' && vstTests[i].strPhone.at(j) <= '9') continue; else { bFlag = false; break; } } if (vstTests[i].N < 11 || vstTests[i].strPhone.find('8') == -1 || !bFlag) { vFlags[i] = -1; continue; } if (vFlags[i] != -1) { //vstTests[i].strPhone = "18888888888"; int nIdx = vstTests[i].strPhone.find('8'); int nLength = vstTests[i].strPhone.length() - nIdx; if (nLength < 11) vFlags[i] = -1; } } for (int i = 0; i < vFlags.size(); i++) { if (vFlags[i] == 0) cout << "YES" << endl; else cout << "NO" << endl; }第二题AC10%,
typedef struct TEST { long long nX; long long nY; }STTEST; void swap(STTEST& st1, STTEST& st2) { STTEST st_tmp; st_tmp.nX = st1.nX; st_tmp.nY = st1.nY; st1.nX = st2.nX; st1.nY = st2.nY; st2.nX = st_tmp.nX; st2.nY = st_tmp.nY; } int main() { long N; cin >> N; vector<STTEST> vstTests; long long nCount = 0; while (N--) { STTEST stTest; cin >> stTest.nX >> stTest.nY; nCount += stTest.nX; vstTests.push_back(stTest); } for (long i = 0; i < vstTests.size() - 1; i++) { for (long j = 0; j < vstTests.size() - i - 1; j++) { if (vstTests[j].nY < vstTests[j + 1].nY) swap(vstTests[j], vstTests[j + 1]); } } vector<long long> vDelay(nCount, -1); long long nIdx = 0; for (long i = 0; i < vstTests.size(); i++) { while (vstTests[i].nX--) vDelay[nIdx++] = vstTests[i].nY; } long long nMax = 0; for (long long i = 0; i < vDelay.size() / 2; i++) { long long nSum = vDelay[i] + vDelay[nCount - i - 1]; if (nSum > nMax) nMax = nSum; } cout << nMax << endl; system("pause"); return 0; }第四题AC60%,
int N, K; cin >> N >> K; vector<int> vDatas; while (N--) { int a; cin >> a; vDatas.push_back(a); } for (int i = 0; i < K; i++) { int n = 0; while (n < vDatas.size() && vDatas[n] == 0) { n++; } if (n == N) { cout << 0 << endl; } else { int nMin = vDatas[n]; for (int j = 0; j < vDatas.size(); j++) { if (vDatas[j] != 0 && vDatas[j] < nMin) { nMin = vDatas[j]; } } for (int j = 0; j < vDatas.size(); j++) { if (vDatas[j] >= nMin) vDatas[j] -= nMin; } cout << nMin << endl; } } system("pause"); return 0;