社区讨论
80pts求调
P9752[CSP-S 2023] 密码锁参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo0ufoxd
- 此快照首次捕获于
- 2023/10/22 10:22 2 年前
- 此快照最后确认于
- 2023/11/02 12:03 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e2+5;
int n,ans;
int a[maxn][maxn],p[maxn],come[maxn];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=5;j++){
scanf("%d",&a[i][j]);
}
}
memset(p,0,sizeof(p));
for(p[1]=0;p[1]<=9;p[1]++)
for(p[2]=0;p[2]<=9;p[2]++)
for(p[3]=0;p[3]<=9;p[3]++)
for(p[4]=0;p[4]<=9;p[4]++)
for(p[5]=0;p[5]<=9;p[5]++){
memset(come,0,sizeof(come));
for(int k=1;k<=n;k++){
int flag=0;
for(int i=1;i<=5;i++){
if(p[i]!=a[k][i]) flag++;
}
if(flag==1) come[k]=1;
}
int f1=0,f2=0,flag=0;
for(int k=1;k<=n;k++){
if(come[k]) continue;
for(int i=1;i<=4;i++){
if(p[i]!=a[k][i] && p[i+1]!=a[k][i+1]) f1++;
}
for(int i=1;i<=5;i++) {
if(p[i]!=a[k][i]) f2++;
}
if(f1!=1 || f2!=2){
flag=1;
break;
}
}
if(flag) continue;
int sum=1;
for(int k=1;k<=n;k++){
if(come[k]) continue;
flag=0;
for(int i=1;i<=4;i++){
if(p[i]!=a[k][i] && p[i+1]!=a[k][i+1]){
int h=abs(p[i]-a[k][i]+1);
if((p[i+1]+h)%10==a[k][i+1]) flag=1;
break;
}
}
if(!flag){
sum=0;
break;
}
}
if(sum) ans++;
}
printf("%d\n",ans);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...