POJ 1426 Find The Multiple

Find The Multiple
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 37083 Accepted: 15507 Special Judge

Description

Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a corresponding m containing no more than 100 decimal digits.

Input

The input file may contain multiple test cases. Each line contains a value of n (1 <= n <= 200). A line containing a zero terminates the input.

Output

For each value of n in the input print a line containing the corresponding value of m. The decimal representation of m must not contain more than 100 digits. If there are multiple solutions for a given value of n, any one of them is acceptable.

Sample Input

2
6
19
0

Sample Output

10
100100100100100100

111111111111111111

做kuangbin系列的时候遇到的搜索题。

题意是找出一个01构成的十进制数使其能整除给定的数

如果不是分类在搜索里根本想不到是搜索好嘛

搜题解的时候搜到很多数论啊同余啊不管数学不会啊orz

先用dfs试了一下发现由于dfs是向一个方向死命的搜(即10000000...0这样搜)容易越界+超时

(补充:dfs其实也能过,就是要用unsigned long long 反正就不是不太好啦

所以该用bfs进行搜索,两个入口进行双向搜索,这样效率大大提升。

这样过了以后,又试了一下打表。

0ms无压力。

//#include <bits/stdc++.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
const int maxn = 1e6;
const int N = 20;
bool used[N][N];
int perm[maxn];
int maze[N][N];
long long n,k,cnt = 0;
long long ans = 0;
int l,r,C;
typedef pair<int,int> P;
int dx[] = {-1,1,0,0,0,0};
int dy[] = {0,0,1,-1,0,0};
int dz[] = {0,0,0,0,-1,1};
P father[10][10];
int flag = 0;
typedef long long ll;
ll bfs(ll n)
{
    queue<ll> Q;
    Q.push(1);
    while(1)
    {
        ll t = Q.front();
        Q.pop();
        if(t % n == 0)return t;
        Q.push(t * 10);
        Q.push(t * 10 + 1);
    }
}
int main()
{
    std::ios::sync_with_stdio(false);
    while(cin>>n && n)
    {
        cout<<bfs(n)<<endl;
    }
    return 0;
}

打表:

ll Ans[]={1,
    10,
    111,
    100,
    10,
    1110,
    1001,
    1000,
    111111111,
    10,
    11,
    11100,
    1001,
    10010,
    1110,
    10000,
    11101,
    1111111110,
    11001,
    100,
    10101,
    110,
    110101,
    111000,
    100,
    10010,
    1101111111,
    100100,
    1101101,
    1110,
    111011,
    100000,
    111111,
    111010,
    10010,
    11111111100,
    111,
    110010,
    10101,
    1000,
    11111,
    101010,
    1101101,
    1100,
    1111111110,
    1101010,
    10011,
    1110000,
    1100001,
    100,
    100011,
    100100,
    100011,
    11011111110,
    110,
    1001000,
    11001,
    11011010,
    11011111,
    11100,
    100101,
    1110110,
    1111011111,
    1000000,
    10010,
    1111110,
    1101011,
    1110100,
    10000101,
    10010,
    10011,
    111111111000,
    10001,
    1110,
    11100,
    1100100,
    1001,
    101010,
    10010011,
    10000,
    1111111101,
    111110,
    101011,
    1010100,
    111010,
    11011010,
    11010111,
    11000,
    11010101,
    1111111110,
    1001,
    11010100,
    10000011,
    100110,
    110010,
    11100000,
    11100001,
    11000010,
    111111111111111111,
    100,
    101,
    1000110,
    11100001,
    1001000,
    101010,
    1000110,
    100010011,
    110111111100,
    1001010111,
    110,
    111,
    10010000,
    1011011,
    110010,
    1101010,
    110110100,
    10101111111,
    110111110,
    100111011,
    111000,
    11011,
    1001010,
    10001100111,
    11101100,
    1000,
    11110111110,
    11010011,
    10000000,
    100100001,
    10010,
    101001,
    11111100,
    11101111,
    11010110,
    11011111110,
    11101000,
    10001,
    100001010,
    110110101,
    100100,
    10011,
    100110,
    1001,
    1111111110000,
    11011010,
    100010,
    1100001,
    11100,
    110111,
    11100,
    1110001,
    11001000,
    10111110111,
    10010,
    1110110,
    1010100,
    10101101011,
    100100110,
    100011,
    100000,
    11101111,
    11111111010,
    1010111,
    1111100,
    1111110,
    1010110,
    11111011,
    10101000,
    10111101,
    111010,
    1111011111,
    110110100,
    1011001101,
    110101110,
    100100,
    110000,
    100101111,
    110101010,
    11010111,
    11111111100,
    1001111,
    10010,
    100101,
    110101000,
    1110,
    100000110,
    1001011,
    1001100,
    1010111010111,
    110010,
    11101111,
    111000000,
    11001,
    111000010,
    101010,
    110000100,
    1101000101,
    1111111111111111110,
    111000011,
    1000};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值