原创代码
仅供参考
欢迎评论O(∩_∩)O~
/*
ID: 输你自己的
PROG: crypt1
LANG: C++
*/
/*
***
**
-------
***
***
-------
****
*/
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;
int a[12],b[16],c[7];
int n;
bool find(int x){
for(int i=1;i<=n;i++)
if(x==a[i]) return true;
return false;
}
bool can(){
int k=0;
if(c[3]==0||c[5]==0) return false;
for(int i=1;i<=3;i++)
{
b[++k]+=c[i]*c[4];
if(b[k]>9) {
b[k+1]+=b[k]/10;
b[k]%=10;
}
if(!find(b[k])) return false;
}
if(b[++k]!=0) return false;
for(int i=1;i<=3;i++)
{
b[++k]+=c[i]*c[5];
if(b[k]>9){
b[k+1]+=b[k]/10;
b[k]%=10;
}
if(!find(b[k])) return false;
}
if(b[++k]!=0) return false;
for(int i=2;i<=4;i++){
b[++k]+=b[i]+b[i+3];
if(b[k]>9){
b[k+1]+=b[k]/10;
b[k]%=10;
}
if(!find(b[k])) return false;
}
if(b[++k]!=0) return false;
return true;
}
int main()
{
freopen("crypt1.in","r",stdin);
freopen("crypt1.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
int ans=0;
for(int q=1;q<=n;q++)
for(int w=1;w<=n;w++)
for(int e=1;e<=n;e++)
for(int r=1;r<=n;r++)
for(int t=1;t<=n;t++){
memset(b,0,sizeof(b));
c[1]=a[q],c[2]=a[w],c[3]=a[e],c[4]=a[r],c[5]=a[t];
if(can())
ans++;
}
cout<<ans<<endl;
return 0;
}
ps:
两个字
暴搜