hdu 4235 Vampire Numbers 模拟+优化

来源:互联网 发布:节奏大师脚本源码 编辑:程序博客网 时间:2024/06/05 23:38

开始一直wa,想不通,后来发现x=100W但下一个vp数可能大于100W,数组越界了。多开10W又如何- -!

#include<iostream>#include<cstdio>#include<math.h>using namespace std;const int N=1100000;int ans[N],num[10];void func(int k,int c){while(k){num[k%10]+=c;k/=10;}}int check(int a,int b,int n){memset(num,0,sizeof num);func(a,1),func(b,1),func(n,-1);for(int i=0;i<10;i++)if(num[i]!=0) return 0;return 1;}int isvp(int n){int l=sqrt(1.0*n);for(int i=2;i<=l;i++){if(n%i!=0) continue;if(check(i,n/i,n)) return 1;}return 0;}int find(int n){if(ans[n]!=0)//已经存在return ans[n];if(isvp(n))//是vp数return ans[n]=n;return ans[n]=find(n+1);//下一个vp数}int main(){int n;while(~scanf("%d",&n)&&n){if(ans[n]==0)find(n);printf("%d\n",ans[n]);}return 0;}


0 0