POJ 1426 Find The Multiple
本以为这题会很难,又是大数又是搜索的,结果仔细一研究,就是一水题……
大致题意:
给出一个整数n,(1 <= n <= 200)。求出任意一个它的倍数m,要求m必须只由十进制的'0'或'1'组成。
从小往大搜超不出unsigned long long型的范围,每个数都有答案,放心的DFS就行。下面是代码:
#include <stdio.h> int n,flat; unsigned long long b; void DFS(unsigned long long a,int step) { if(flat||step==19) { return ; } if(a%n==0) { printf("%I64u\n",a); flat=1; return ; } else { DFS(a*10,step+1); DFS(a*10+1,step+1); } return ; } int main() { while(scanf("%d",&n),n) { flat=0; DFS(1,0); } return 0; }