[CSP-S 2023] 密码锁
[CSP-S 2023] 密码锁
考场上我跟个 乱搞写一下就出来了。
当时我还算了一下暴力好像也不会超时,结果,每天在 yz 日以继日的颓废考试经验,我断定 CSP-S 是不会考这么
考试后,一看wc枚举,我断定我就是 sb。
思路
暴力出省一
结论是如果所枚举的密码,和任何一个给定密码相同那么不可累加,变一个密码很好判断,只要看枚举的与给定是否只有一个不同。两个呢?发现变两个时,两个值
#include <bits/stdc++.h>
using namespace std;
int a[10][7], sum[7];
int n;
bool check(int _1, int _2, int _3, int _4, int _5){
for(int i = 1; i <= n; i++){
if(_1 == a[i][1] && _2 == a[i][2] && _3 == a[i][3] && _4 == a[i][4] && _5 == a[i][5])return 0;
sum[1] = (a[i][1] - _1 + 10) % 10, sum[2] = (a[i][2] - _2 + 10) % 10, sum[3] = (a[i][3] - _3 + 10) % 10, sum[4] = (a[i][4] - _4 + 10) % 10, sum[5] = (a[i][5] - _5 + 10) % 10;
int cnt = 0;
for(int j = 1; j <= 5; j++){
if(sum[j] == 0)continue;
cnt++;
if(cnt >= 3)return 0;
if(cnt == 2){
if(sum[j] != sum[j - 1])return 0;
}
}
}
return 1;
}
int main() {
cin >> n;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= 5; j++)
cin >> a[i][j];
long long ans = 0;
for(int _1 = 0; _1 <= 9; _1++){
for(int _2 = 0; _2 <= 9; _2++){
for(int _3 = 0; _3 <= 9; _3++){
for(int _4 = 0; _4 <= 9; _4++){
for(int _5 = 0; _5 <= 9; _5++){
ans += check(_1, _2, _3, _4, _5);
}
}
}
}
}
cout << ans;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现