您的位置:首页 > 编程语言

自己的usaco代码---PROB Prime Cryptarithm

2013-08-24 16:14 357 查看
原创代码

仅供参考

欢迎评论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:

两个字
暴搜
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  usaco 代码 crypt1 c++ 简单