#include <bits/stdc++.h>
using namespace std;
unsigned long long int calculate(string &s, int n, int cur, const string &sub, map<string, int> &used) {
if(cur == n) {
unsigned long long int result = used[sub]++;
// if(result == 1)
// cout << sub << "\n";
return result == 1;
}
return calculate(s, n, cur+1, sub+s[cur], used) + calculate(s, n, cur+1, sub, used);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
string s;
int n, q; //length and queries
cin >> n >> q >> s;
while(true) {
q--;
map<string, int> used;
cout << calculate(s, n, 0, "", used) << "\n"; //subtract empty set
if(q == -1)
break;
int i;
char c;
cin >> i >> c;
s[i-1] = c;
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <bits/stdc++.h> using namespace std; unsigned long long int calculate(string &s, int n, int cur, const string &sub, map<string, int> &used) { if(cur == n) { unsigned long long int result = used[sub]++; // if(result == 1) // cout << sub << "\n"; return result == 1; } return calculate(s, n, cur+1, sub+s[cur], used) + calculate(s, n, cur+1, sub, used); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); string s; int n, q; //length and queries cin >> n >> q >> s; while(true) { q--; map<string, int> used; cout << calculate(s, n, 0, "", used) << "\n"; //subtract empty set if(q == -1) break; int i; char c; cin >> i >> c; s[i-1] = c; } return 0; } |
English