HDU 3419 水搜索

来源:互联网 发布:js.com 编辑:程序博客网 时间:2024/05/01 12:43

注意几个特殊条件

然后爆搜 水


#include "stdio.h"#include "string.h"#include "math.h"#include "stdlib.h"int judge(int w){int x;int num[11];memset(num,0,sizeof(num));while (w!=0){x=w%10;if (x==0) return 1;if (num[x]==1) return 1;else num[x]=1;w/=10;}return 0;}int judgee(int a,int b,int w){int num[11],x,c;memset(num,0,sizeof(num));c=a*b;x=log10(c)+1;if (x!=w) return 1;while (a!=0){if (num[a%10]==1) return 1;else num[a%10]=1;a/=10;}while (b!=0){if (num[b%10]==1) return 1;else num[b%10]=1;b/=10;}while (c!=0){if (c%10==0) return 1;if (num[c%10]==1) return 1;else num[c%10]=1;c/=10;}return 0;}int main(){int a,b,aa,bb,j,c,sum,i,ans;int hash[10010];memset(hash,0,sizeof(hash));for (i=10;i<=9999;i++)if (judge(i)==1) hash[i]=1;while (scanf("%d%d%d",&a,&b,&c)!=EOF){if (a+b+c==0) break;if (a+b>c+1){printf("0\n");continue;}if (a>c || b>c){printf("0\n");continue;}if (a==0 || b==0 || c==0) {printf("0\n");continue;}if (a+b<c){printf("0\n");continue;}aa=1;for (i=1;i<a;i++)aa*=10;bb=1;for (i=1;i<b;i++)bb*=10;ans=0;for (i=aa;i<aa*10;i++)if (hash[i]==0)for (j=bb;j<bb*10;j++)if (hash[j]==0){if (    judgee(i,j,c)==1) continue;//printf("%d %d %d\n",i,j,i*j);ans++;}  printf("%d\n",ans);}return 0;}




原创粉丝点击