POJ1426 Find The Multiple(E)
程序员文章站
2022-06-12 09:14:39
...
题目大意是给出一个数n,找出一个数要求是n的倍数,并且这个数的十进制只由1和0组成,要求输出任意一个满足该条件的m 可以用深搜 从1开始每次对他*10和*10+1查找能否被n整除 这个数应该是longlong范围内(不要问为什么 我猜的) 所以根据longlong范围 最多乘19次
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue>
using namespace std;
#define maxn 20
bool ok;
void dfs(long long m,int n,int k)
{
if(k==19)return;
if (ok)return ;
if(m%n==0)
{
printf("%lld\n",m);
ok=true;
return ;
}
dfs(m*10,n,k+1);
dfs(m*10+1,n,k+1);
}
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n==0)break;
ok=false;
dfs(1,n,0);
}
return 0;
}
上一篇: Vuejs第九篇之组件作用域及props数据传递实例详解
下一篇: BFS与DFS的总结
推荐阅读
-
POJ 1426 Find The Multiple 简单dfs构造
-
POJ-1426 Find The Multiple
-
POJ1426 Find The Multiple
-
POJ - 1426(Find The Multiple)
-
POJ1426 Find The Multiple(E)
-
POJ1426 Find The Multiple 题解
-
POJ 1426 Find The Multiple G++ dfs 巧妙
-
POJ 1426 Find The Multiple(BFS)
-
Find The Multiple
-
POJ 1426 Find The Multiple(BFS&&DFS)