Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define ll long long
- #include <bits/stdc++.h>
- using namespace std;
- const int OO = 1e9;
- const double EPS = 1e-9;
- ll cnt[1 << 15];
- bool found[10];
- ll ans = 0;
- void add(int i = 0, int sum = 0) {
- if(i == 10) {
- if(sum != 0) {
- cnt[sum]++;
- //cout << "adding to " << sum << "\n";
- }
- }
- else {
- add(i+1,sum);
- if(found[i])
- add(i+1,sum + (1 << i));
- }
- }
- void solve(int i = 0, int sum = 0, int taken = 0) {
- if(i == 10) {
- ll curr = (cnt[sum]*(cnt[sum]-1))/2;
- ans += (taken%2 ? 1:-1)*curr;
- }
- else {
- solve(i+1,sum,taken);
- solve(i+1,sum + (1 << i), taken+1);
- }
- }
- int main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- cout.tie(NULL);
- int n;
- cin >> n;
- for(int i = 0; i < n; i++) {
- string s;
- cin >> s;
- for(int k = 0; k < s.size(); k++) {
- found[s[k]-'0'] = 1;
- }
- add();
- for(int i = 0; i < 10; i++) {
- found[i] = 0;
- }
- }
- solve();
- cout << ans << "\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement