腾讯笔试:后台笔试题吐槽
今天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;
美的集团公司福利 798人发布