给你一个n,求出任意一个倍数m,全部由0或者1组成
http://blog.csdn.net/lyy289065406/article/details/6647917
上面的blog写得非常的详细。
#include<iostream> #include<cstdio> #include<string.h> #include<string> #include<stack> #include<set> #include<algorithm> #include<cmath> #include<vector> #include<map> #include<queue> #define ll __int64 #define lll unsigned long long//这个题可以用无符号进制数表示出来,算是一个小漏洞。。实际要用同余定理之类的。。 #define MAX 10000009 #define MAXN 2009 #define eps 1e-8 #define INF 0xfffffff #define mod 1000000007 #define lson l , m , rt << 1 #define rson m + 1 , r , rt << 1 | 1 using namespace std; int flag; void dfs(lll x,int n,int deep) { if(flag) { return ; } if(x%n==0) { flag = 1; printf("%llu\n",x); return ; } if(deep==19) { return ; } dfs(x*10,n,deep + 1); dfs(x*10 + 1,n,deep + 1); } int main() { int n; while(~scanf("%d",&n)&&n) { flag = 0; dfs(1,n,0); } return 0; }