90pts求调
查看原帖
90pts求调
1672970
Yishui_LightSky楼主2025/7/27 20:18
#include <iostream>
#include <vector>
#include <unordered_set>
#include <bits/stdc++.h>
#define mid size()/2
#define pol *2+1
#define por *2+2
using ll = long long;
using namespace std;
string s;
int n;
bool ist=false;
int toint(string s){
	int in=1,val=0;
	for(int i=s.size();i-->0;){
		val+=in*(s[i]-'0');
		in*=10;
	}
	return val;
}
void dfs(int aim,int now,int val,int ind){
	if(val>n)return;
	if(aim==now){
		if(val+toint(s.substr(ind,s.size()-ind))==n){
			ist=true;
		}
	}else{
	for(int i=ind;i<s.size()-(aim-now-1);i++){
		dfs(aim,now+1,val+toint(s.substr(ind,i+1-ind)),i+1);
	}
}
}
int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>s>>n;
	for(int i=0;i<s.length();i++){
		dfs(i,0,0,0);
		if(ist){
			cout<<i;
			break;
		}
	}
	if(!ist)
	cout<<-1;
	return 0;
}
2025/7/27 20:18
加载中...