1 条题解
-
0
#include <iostream> #include <cmath> char process_c(char c, int *e_count) { switch (c) { case 'J': // 可以是J,D *e_count += 1; return 'J'; case 'B': // 必须是 D return 'D'; case 'D': default: // 可以是J,D *e_count += 1; return 'J'; } } /* long long quick_power(int base, long long exp){ long long result = 1; while (exp > 0) { if (exp % 2 == 1) { result *= base; } base *= base; exp /= 2; } } */ long long int_power(int base, long long exp){ long long result = 1; for (int i = 0; i < exp; i++) { result *= base; } return result; } long long case_result() { int char_count; std::cin >> char_count; std::string s; std::string s_opposite; int e_count = 0; long long solution_count = 0; std::cin >> s; if (s.back() != 'J') { return 0; } s.pop_back(); // 先计算积攒最多能量的方法 for (char c : s) { s_opposite += process_c(c, &e_count); } // std::cout << s_opposite << ' '; if (e_count < 1) { return 0; } else { solution_count = int_power(2, e_count) - 1; } return solution_count; } int main() { int cases_count; std::cin >> cases_count; for (int i = 0; i < cases_count; i++) { std::cout << case_result() << std::endl; } return 0; }
- 1
信息
- ID
- 44
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 108
- 已通过
- 11
- 上传者