第一题
``` cpp
#include <iostream>
#include <vector>
#include <string>
#include <map>
using namespace std;
int slideWindow(const vector<int>& v) {
int cnt = 0;
int s = v.size();
for (int left = 0, right = 0; right < s; right++) {
if (v[right] == 0) {
left = right++;
continue;
}
int tL = left;
while (right - tL + 1 >= 5) {
int tmp = 1;
for (int l = tL; l <= right; l++) tmp *= v[l];
cnt += tmp;
tL++;
}
}
return cnt;
}
int main()
{
int T = 0;
std::cin >> T;
while (T--) {
int num = 0;
cin >> num;
vector<int> v(14, 0);
while (num--) {
string t;
cin >> t;
int i = atoi(t.c_str());
if (i <= 10 && i >= 2)
v[i]++;
else if (t == "A")
v[t[0] - 'A' + 1]++;
else if (t == "J")
v[11]++;
else if (t == "Q")
v[12]++;
else v[13]++;
}
std::cout << slideWindow(v) << std::endl;
}
}
```
第二题
``` cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string intToBin(int num) {
//if (num == 0) return "0";
string s(10, '0');
int i = 0;
while (num) {
int a = num & 1;
num >>= 1;
s[i++] = a + '0';
}
return s;
}
int binToInt(string& s) {
int ans = 0;
for (int i = 0; i < s.size(); i++) {
ans += (s[i] - '0') * pow(2, i);
}
return ans;
}
string Result(string& num) {
//if (num == 0) return "0";
string str = "";
int p = num.size();
while (p >= 0) {
int begin = p - 3 > 0 ? p - 3 : 0;
int end = p-1;
p -= 3;
string s1(num.substr(begin, end - begin + 1));
int n1 = atoi(s1.c_str());
str += intToBin(n1);
}
vector<string> vecStr;
int i = 0;
while(i < str.size()) {
string s;
int j = 5;
while (i < str.size() && j--) {
s.push_back(str[i++]);
}
vecStr.push_back(s);
}
string ret = "";
for (auto& v : vecStr) {
int num = binToInt(v);
if (num < 10) ret += num + '0';
else ret += 'A' + num - 10;
}
reverse(ret.begin(), ret.end());
i = 0;
while (ret[i] == '0') {
i++;
}
return ret.substr(i);
}
int main()
{
int T = 0;
while (cin >> T) {
while (T--) {
string num;
cin >> num;
std::cout << Result(num) << std::endl;
}
}
}
```