Find The Multiple (dfs)POJ - 1426

題目大意:找到一個數的倍數並且這個數只能由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);
 }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章