MLE求救
查看原帖
MLE求救
644394
dongrq_cs楼主2023/8/12 14:25
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
int n,ans,num[5];
bool vis[10];
bool check(){
	if(num[2] % num[3] != 0){
		return false;
	}
	return  (num[1] + num[2] / num[3] == n);
}
void dfs(int cur,int id){
	if(cur == 10 && id == 3){
		if(check() == true){
			ans++;
		}
		return ;
	}
	if(cur == 10 && id > 3){
		return ;
	}
	if(num[1] > n || num[3] > num[2]){
		return ;
	}
	for(int i = 1;i <= 9;i++){
		if(vis[i] == false){
			int tmp = num[id];
			num[id] = tmp * 10 + i;
			vis[i] = true;
			dfs(cur + 1,id);
			num[id] = tmp;
			num[id + 1] = i;
			dfs(cur + 1,id + 1);
			vis[i] = false;`
			num[id + 1] = 0;
		}
	}
	return ;
}
int main(){
	cin >> n;
	dfs(1,1);
	cout << ans;
	return 0;
}
2023/8/12 14:25
加载中...