Language: C++

#include<bits/stdc++.h>
using namespace std;

vector<int> binstring(int m,int l){
  vector<int> M(l);
  while(m!=0){
    if(m%2==1){
      M[l-1]=1;
      m-=1;
    }
    else{
      M[l-1]=0;
    }
    l--;
    m/=2;#include<bits/stdc++.h>
using namespace std;

vector<int> binstring(int m,int l){
  vector<int> M(l);
  while(m!=0){
    if(m%2==1){
      M[l-1]=1;
      m-=1;
    }
    else{
      M[l-1]=0;
    }
    l--;
    m/=2;
  }
  return M;
}

int main(){
  int N;
  string S;
  cin>>N>>S;
 
  int max;
  max=pow(2,N)-1;
  
  int count=0;
  string s="";
  string s1="";
  //全ての部分列を作って重複を調べる
  //文字列Sの部分列sを作る
  //0と1の組み合わせでできる列
  //1~maxを二進数展開して作る
  vector<int> n(N);
  bool flag=false;

  for(int i=1;i<=max;i++){
    n=binstring(i,N);
    
    //nをもとに部分列sを作成
    for(int j=0;j<N;j++){
      if(n[j]==1){
        s+=S[j];//Sの部分列sを作成
      }
    }
    //sに含まれる謎文字を消してきれいなs1に
    for(int m=0;m<s.size();m++){
      if(isalpha(s[m])){
        s1+=s[m];
      }
    }
    
    //文字列s1に対して重複してる文字があるか調べる
    for(int k=0;k<s1.size();k++){
      for(int l=k+1;l<s1.size();l++){
        if(s1[k]==s1[l]){
          //重複していたらcount
          count++;
          flag=true;
        }
        if(flag)break;
      }
      if(flag)break;
    }
    flag=false;
    
    s.clear();
    s1.clear();
  }
  
  int ans,ans1;
  ans1=pow(10,9)+7;
  ans=(max-count);
  ans%=ans1;
  cout<<ans;
  
}

  
  }
  return M;
}

int main(){
  int N;
  string S;
  cin>>N>>S;
 
  int max;
  max=pow(2,N)-1;
  
  int count=0;
  string s="";
  string s1="";
  //全ての部分列を作って重複を調べる
  //文字列Sの部分列sを作る
  //0と1の組み合わせでできる列
  //1~maxを二進数展開して作る
  vector<int> n(N);
  bool flag=false;

  for(int i=1;i<=max;i++){
    n=binstring(i,N);
    
    //nをもとに部分列sを作成
    for(int j=0;j<N;j++){
      if(n[j]==1){
        s+=S[j];//Sの部分列sを作成
      }
    }
    //sに含まれる謎文字を消してきれいなs1に
    for(int m=0;m<s.size();m++){
      if(isalpha(s[m])){
        s1+=s[m];
      }
    }
    
    //文字列s1に対して重複してる文字があるか調べる
    for(int k=0;k<s1.size();k++){
      for(int l=k+1;l<s1.size();l++){
        if(s1[k]==s1[l]){
          //重複していたらcount
          count++;
          flag=true;
        }
        if(flag)break;
      }
      if(flag)break;
    }
    flag=false;
    
    s.clear();
    s1.clear();
  }
  
  cout<<((max-count)%(pow(10,9)+7));
  
}

  

Compiler output:
a.cc:15:10: error: stray '#' in program
   15 |     m/=2;#include<bits/stdc++.h>
      |          ^
a.cc: In function 'std::vector<int> binstring(int, int)':
a.cc:15:11: error: 'include' was not declared in this scope
   15 |     m/=2;#include<bits/stdc++.h>
      |           ^~~~~~~
a.cc:15:19: error: 'bits' was not declared in this scope
   15 |     m/=2;#include<bits/stdc++.h>
      |                   ^~~~
a.cc:15:24: error: 'stdc' was not declared in this scope; did you mean 'std'?
   15 |     m/=2;#include<bits/stdc++.h>
      |                        ^~~~
      |                        std
a.cc:16:1: error: expected primary-expression before 'using'
   16 | using namespace std;
      | ^~~~~
a.cc:18:35: error: a function-definition is not allowed here before '{' token
   18 | vector<int> binstring(int m,int l){
      |                                   ^
a.cc:34:9: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
   34 | int main(){
      |         ^~
a.cc:34:9: note: remove parentheses to default-initialize a variable
   34 | int main(){
      |         ^~
      |         --
a.cc:34:9: note: or replace parentheses with braces to value-initialize a variable
a.cc:34:11: error: a function-definition is not allowed here before '{' token
   34 | int main(){
      |           ^
a.cc: In function 'int main()':
a.cc:151:21: error: invalid operands of types 'int' and '__gnu_cxx::__promote<double>::__type' {aka 'double'} to binary 'operator%'
  151 |   cout<<((max-count)%(pow(10,9)+7));
      |          ~~~~~~~~~~~^~~~~~~~~~~~~~
      |              |                 |
      |              int               __gnu_cxx::__promote<double>::__type {aka double}