社区讨论

MLE求救

P8599 [蓝桥杯 2013 省 B] 带分数参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo1vst5q
此快照首次捕获于
2023/10/23 03:48
2 年前
此快照最后确认于
2023/11/03 04:17
2 年前
查看原帖
CPP
#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;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...