SETNJA - Setnja
Tác giả: ladpro98
Ngôn ngữ: C++
#include <bits/stdc++.h>
const int MOD = 100000000;
const int N = 10010;
using namespace std;
typedef vector<int> big;
char s[N];
big operator + (big a, big b) {
big c; int carry = 0;
for(int i = 0; i < a.size() || i < b.size(); i++) {
if (i < a.size()) carry += a[i];
if (i < b.size()) carry += b[i];
c.push_back(carry % MOD);
carry /= MOD;
}
if (carry) c.push_back(carry);
return c;
}
big operator * (big a, int b) {
big c; int carry = 0;
for(int i = 0; i < a.size(); i++) {
carry += a[i] * b;
c.push_back(carry % MOD);
carry /= MOD;
}
if (carry) c.push_back(carry);
return c;
}
void print(big a) {
printf("%d", a[a.size() - 1]);
for(int i = a.size() - 2; i >= 0; i--)
printf("%08d", a[i]);
printf("\n");
}
int main() {
scanf("%s", &s);
int n = strlen(s);
big F; F.push_back(1);
big aster; aster.push_back(1);
for(int i = 0; i < n; i++) {
if (s[i] == 'L') F = F + F; else
if (s[i] == 'R') F = F + F + aster; else
if (s[i] == '*') {
F = (F * 5) + aster;
aster = aster * 3;
}
}
print(F);
return 0;
}