Find The Multiply

Find The Multiply poj-1426

    题目大意:给你一个正整数n,求任意一个正整数m,使得n|m且m在十进制下的每一位都是0或1。

    注释:n<=200。

      想法:看网上的题解全是bfs乱搜(其实我的做法也是bfs),我来说一说我这简单的bfs。其实这道题的精髓就在于如何考虑对于大数的处理。显然,我们可以用同余mod定理来搞定。

    最后,附上丑陋的代码... ...

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 long long ans[600001];
 5 int main()
 6 {
 7     int n;
 8     while(~scanf("%d",&n))
 9     {
10         if(n==0) return 0;
11         for(int i=1;;i++)
12         {
13             ans[i]=ans[i/2]*10+i%2;
14             if(ans[i]%n==0)
15             {
16                 break;
17             }
18         }
19         printf("%I64d\n",ans[i]);
20     }
21 }

    小结:定理的充分运用才是重要的... ...

posted @ 2018-02-12 21:46  JZYshuraK_彧  阅读(171)  评论(0编辑  收藏  举报