您的位置:首页 > 其它

POJ1426 Find The Multiple

2014-08-30 00:04 399 查看
模拟BFS解法+DFS解法

BFS:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int mod[524286];

int main()
{
int n;
//freopen("d:\\test.txt","r",stdin);
while(cin>>n&&n)
{
mod[1]=1%n;
int i;
for(i=2;mod[i-1]!=0;i++)
{
mod[i]=(mod[i/2]*10+i%2)%n; //模拟BFS的双入口搜索
}
i--;
int j=0;
while(i)
{
mod[j++]=i%2;
i/=2;
}
while(j)
{
cout<<mod[--j];
}
cout<<endl;
}
return 0;
}


DFS:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int k;
bool dfs(int cnt,long long sum)
{
if(cnt > 18) return false;
if(sum % k == 0)
{
printf("%lld\n",sum);
return true;
}
if(dfs(cnt+1,sum*10+1)) return true;
if(dfs(cnt+1,sum*10)) return true;
return false;
}
int main()
{
//freopen("d:\\test.txt","r",stdin);
while(scanf("%d",&k) != EOF)
{
if(k == 0) break;
dfs(0,1);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: