Find The Multiple (dfs)POJ - 1426

xiaoxiao2021-02-28  93

题目大意:找到一个数的倍数并且这个数只能由1和0组成

思路:dfs递归查找,两种dfs的走法

#include<stdio.h> int flag=0; int n; void dfs(int i,unsigned long long j); int main(void) { while(scanf("%d",&n),n){ flag=0; dfs(0,1); } return 0; } void dfs(int i,unsigned long long j){//使用i防止一条路走到黑 long long 最大有19位 if(flag||i==19)//判断位数是否达到最大或者是否已经找到 return ; if(j%n==0){//判断这个数是不是符合条件 printf("%lld\n",j); flag=1; return ; } dfs(i+1,j*10);//两种走法 dfs(i+1,j*10+1); }

转载请注明原文地址: https://www.6miu.com/read-38442.html

最新回复(0)