Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <algorithm>
- using namespace std;
- int N,f,mod=1000000007;
- long long int w;
- unsigned int A[(1<<10)],B[(1<<10)];
- ifstream fin("palixor.in");
- ofstream fout("palixor.out");
- void interschimb()
- {
- for(int bitmask=0;bitmask<(1<<10);++bitmask)
- swap(A[bitmask],B[bitmask]);
- return;
- }
- int main()
- {
- fin>>N;
- A[0]=1;
- for(int i=0;i<10;++i)
- A[(1<<i)]=1;
- for(int i=1;i<=N;++i)
- {
- fin>>w;
- while(w)
- {
- f^=(1<<(w%10));
- w/=10;
- }
- for(int bitmask=0;bitmask<(1<<10);++bitmask)
- B[bitmask]=(A[bitmask]%mod+A[(bitmask^f)]%mod)%mod;
- interschimb();
- }
- if(!A[0])
- fout<<mod-1;
- else
- fout<<A[0]-1;
- return 0;
- }
Add Comment
Please, Sign In to add comment