第二题不一定每个位置都有+-号的,可以没有。题目给的范围可以到10的4次,仔细想想就知道了。 long res=0; void dfs(string s,long ans,long k){     if(s==""){         if(ans==k)             res++;         return;     }     for(int i=1;i<=s.length();i++){         string temp=s.substr(0,i);         long t=stol(temp);         dfs(s.substr(i,s.length()-i),ans+t,k);         dfs(s.substr(i,s.length()-i),ans-t,k);     } } int main() {     long n,k;     cin>>n;     string s;     while(n--){         res=0;         cin>>s>>k;         for(int i=1;i<=s.length();i++){             string temp=s.substr(0,i);             long t=stol(temp);             dfs(s.substr(i,s.length()-i),t,k);         }         cout<<res<<endl;     } }