Submission #21865521
Source Code Expand
#include <bits/stdc++.h>
#define i64 long long
#define sz(a) int((a).size())
#define all(a) (a).begin(), (a).end()
#define rep(i, a, b) for (int i = (a); i < (b); ++i)
#define per(i, a, b) for (int i = (b) - 1; i >= (a); --i)
using namespace std;
const int M = 3;
struct mint {
int x; mint(int x) : x(x) {}
friend mint operator + (const mint &a, const mint b)
{const int x = a.x + b.x; return mint(x >= M ? x - M : x);}
friend mint operator - (const mint &a, const mint b)
{const int x = a.x - b.x; return mint(x < 0 ? x + M : x);}
friend mint operator * (const mint &a, const mint b)
{return mint(1ll * a.x * b.x % M);}
};
int Pw(int a, int x = M - 2, int res = 1) {
for (; x; x >>= 1, a = (mint(a) * a).x)
{if (x & 1) {res = (mint(res) * a).x;}}
return res;
}
const int N = 4e5;
int n; string s;
struct par {
int p, c;
par(int x) : p(x), c(0) {while (!(p % M)) {p /= M, ++c;}}
};
int main() {
// freopen("c.in", "r", stdin); //
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin >> n >> s;
int res = 0; par f = 1;
rep(i, 0, n) {
int x = s[i] == 'B' ? 0 : (s[i] == 'W' ? 1 : 2);
// cout << f.p << ' ' << f.c << '\n'; //
if (!f.c) {res = (res + mint(f.p) * x).x;}
if (i == n - 1) {break;}
par m = n - 1 - i, d = i + 1;
f.p = (mint(f.p) * m.p * Pw(d.p)).x;
f.c = f.c + m.c - d.c;
}
if (!(n & 1)) {res = (mint(0) - res).x;}
cout << (res == 0 ? 'B' : (res == 1 ? 'W' : 'R')) << '\n';
return 0;
}
/* 📌https://www.cnblogs.com/George1123/p/tips.html */
Submission Info
| Submission Time | |
|---|---|
| Task | C - Tricolor Pyramid |
| User | George1123 |
| Language | C++ (GCC 9.2.1) |
| Score | 600 |
| Code Size | 1549 Byte |
| Status | AC |
| Exec Time | 21 ms |
| Memory | 3896 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt |
| All | corner_01.txt, corner_02.txt, corner_03.txt, corner_04.txt, corner_05.txt, corner_06.txt, corner_07.txt, corner_08.txt, corner_09.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| corner_01.txt | AC | 4 ms | 3536 KiB |
| corner_02.txt | AC | 2 ms | 3496 KiB |
| corner_03.txt | AC | 3 ms | 3548 KiB |
| corner_04.txt | AC | 2 ms | 3536 KiB |
| corner_05.txt | AC | 3 ms | 3524 KiB |
| corner_06.txt | AC | 3 ms | 3552 KiB |
| corner_07.txt | AC | 2 ms | 3576 KiB |
| corner_08.txt | AC | 2 ms | 3524 KiB |
| corner_09.txt | AC | 2 ms | 3592 KiB |
| in01.txt | AC | 14 ms | 3624 KiB |
| in02.txt | AC | 7 ms | 3724 KiB |
| in03.txt | AC | 10 ms | 3728 KiB |
| in04.txt | AC | 7 ms | 3644 KiB |
| in05.txt | AC | 14 ms | 3652 KiB |
| in06.txt | AC | 12 ms | 3788 KiB |
| in07.txt | AC | 13 ms | 3784 KiB |
| in08.txt | AC | 17 ms | 3748 KiB |
| in09.txt | AC | 19 ms | 3852 KiB |
| in10.txt | AC | 15 ms | 3832 KiB |
| in11.txt | AC | 18 ms | 3788 KiB |
| in12.txt | AC | 18 ms | 3800 KiB |
| in13.txt | AC | 21 ms | 3784 KiB |
| in14.txt | AC | 13 ms | 3852 KiB |
| in15.txt | AC | 17 ms | 3832 KiB |
| in16.txt | AC | 16 ms | 3744 KiB |
| in17.txt | AC | 14 ms | 3852 KiB |
| in18.txt | AC | 17 ms | 3792 KiB |
| in19.txt | AC | 14 ms | 3796 KiB |
| in20.txt | AC | 14 ms | 3732 KiB |
| in21.txt | AC | 15 ms | 3844 KiB |
| in22.txt | AC | 16 ms | 3796 KiB |
| in23.txt | AC | 11 ms | 3844 KiB |
| in24.txt | AC | 11 ms | 3736 KiB |
| in25.txt | AC | 12 ms | 3788 KiB |
| in26.txt | AC | 13 ms | 3840 KiB |
| in27.txt | AC | 20 ms | 3844 KiB |
| in28.txt | AC | 12 ms | 3792 KiB |
| in29.txt | AC | 15 ms | 3896 KiB |
| in30.txt | AC | 14 ms | 3848 KiB |
| sample_01.txt | AC | 3 ms | 3552 KiB |
| sample_02.txt | AC | 2 ms | 3644 KiB |
| sample_03.txt | AC | 3 ms | 3572 KiB |
| sample_04.txt | AC | 2 ms | 3592 KiB |
| sample_05.txt | AC | 2 ms | 3668 KiB |