题解:P9752 [CSP-S 2023] 密码锁
lailai0916 · · 题解
题意简述
五位密码锁,每位是
解题思路
转动是可逆的:若密码
一次转动共
用大小
时间复杂度为
参考代码
#include <bits/stdc++.h>
using namespace std;
const int N=100000;
int cnt[N];
void add(int a,int b,int c,int d,int e)
{
cnt[a%10*10000+b%10*1000+c%10*100+d%10*10+e%10]++;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin>>n;
for(int t=0;t<n;t++)
{
int a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
for(int k=1;k<=9;k++)
{
add(a+k,b,c,d,e);
add(a,b+k,c,d,e);
add(a,b,c+k,d,e);
add(a,b,c,d+k,e);
add(a,b,c,d,e+k);
add(a+k,b+k,c,d,e);
add(a,b+k,c+k,d,e);
add(a,b,c+k,d+k,e);
add(a,b,c,d+k,e+k);
}
}
int ans=0;
for(int i=0;i<N;i++)if(cnt[i]==n)ans++;
cout<<ans<<'\n';
return 0;
}