HDU 3699 水爆搜

来源:互联网 发布:纸箱计算公式软件 编辑:程序博客网 时间:2024/04/26 12:05

10福州现场赛签到题

暴力搜索


#include "stdio.h"#include "string.h"#include "stdlib.h"#include "math.h"int hash[11];char s1[11],s2[11],s3[11];int find(int a,int b,int c,int d,int e){__int64 aa,bb,cc;int num[11],i,sum;sum=0;num[1]=a;num[2]=b;num[3]=c;num[4]=d;num[5]=e;if (strlen(s1)!=1 && num[s1[0]-64]==0 ) return 0;if (strlen(s2)!=1 && num[s2[0]-64]==0 ) return 0;if (strlen(s3)!=1 && num[s3[0]-64]==0 ) return 0;aa=bb=cc=0;for (i=0;s1[i];i++)aa=aa*10+num[s1[i]-64];for (i=0;s2[i];i++)bb=bb*10+num[s2[i]-64];for (i=0;s3[i];i++)cc=cc*10+num[s3[i]-64];if (aa+bb==cc) sum++;if (aa-bb==cc) sum++;if (aa*bb==cc) sum++;if (bb!=0 && aa/bb==cc && aa%bb==0) sum++;return sum;}int main(){int temp,k,i,n,i1,i2,i3,i4,i5,ans;scanf("%d",&n);while (n--){getchar();scanf("%s%s%s",s1,s2,s3);memset(hash,0,sizeof(hash));ans=0;for (i1=0;i1<=9;i1++)if (hash[i1]==0)for (i2=0;i2<=9;i2++)if (i2!=i1 &&  hash[i2]==0)for (i3=0;i3<=9;i3++)if (i3!=i2 && i3!=i1 && hash[i3]==0 )for (i4=0;i4<=9;i4++)if (i4!=i1 && i4!=i2 && i4!=i3 && hash[i4]==0)for (i5=0;i5<=9;i5++)if (i5!=i1 && i5!=i2 && i5!=i3 && i5!=i4 && hash[i5]==0)ans+=find(i1,i2,i3,i4,i5);temp=1;memset(hash,0,sizeof(hash));for (i=0;s1[i];i++)hash[s1[i]-64]=1;for (i=0;s2[i];i++)hash[s2[i]-64]=1;for (i=0;s3[i];i++)hash[s3[i]-64]=1;k=10;for (i=1;i<=5;i++)if (hash[i]==1) k--;for (i=1;i<=5;i++)if (hash[i]==0){temp*=k;k--;}    printf("%d\n",ans/temp);}return 0;}


原创粉丝点击