社区讨论
20pts求调
P9752[CSP-S 2023] 密码锁参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m6szst5n
- 此快照首次捕获于
- 2025/02/06 15:04 去年
- 此快照最后确认于
- 2025/11/04 09:54 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,ans;
char ges[10],g[25][10];
bool check(){
for(int i=1;i<=n;i++){ //每个测试数据
int err_bit,err_num=0;
for(int j=1;j<=5;j++){ //逐位验证
if(g[i][j]!=ges[j]){
err_num++;
// cerr<<err_num<<endl;
if(err_num>2)return false;
if(err_num==2){
if(err_bit+1!=j&&err_bit-1!=j)return false;
if((((int)(g[i][err_bit]-'0')-(int)(g[err_bit]-'0')+10)%10)!=(((int)(g[i][j]-'0')-(int)(ges[j]-'0')+10)%10))return false;
}
else if(err_num==1)err_bit=j;
}
}
}
return true;
}
void dfs(int deep){
if(deep>5){
if(check())ans++;
return;
}
for(int i=0;i<=9;i++){
ges[deep]=i+'0';
dfs(deep+1);
}
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>g[i][1]>>g[i][2]>>g[i][3]>>g[i][4]>>g[i][5];
dfs(1);
cout<<ans;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...