zoukankan      html  css  js  c++  java
  • poj 1426 Find The Multiple

    Find The Multiple
    Time Limit: 1000MS Memory Limit: 10000K
    Total Submissions: 25716 Accepted: 10607 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
    Source
    Dhaka 2002
    题目大意
    给出一个整数n,(1 <= n <= 200)。求出任意一个它的倍数m,要求m必须只由十进制的’0’或’1’组成。

    /*
    0和1 两种状态.
    最高位必为1(除1外). 
    bfs余数最后状态余数为0 
    每次扩展front()都会出现两种状态.
    然后用BFS跑最优解. 
    */
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<queue>
    #include<cstring>
    #define MAXN 1001
    #define LL long long
    using namespace std;
    int  n;
    bool b[MAXN];
    LL bfs()
    {
        memset(b,0,sizeof(b));
        queue<LL>qq;
        qq.push(1);
        b[1%n]=true;
        while(!qq.empty())
        {
            LL x=qq.front();
            if(x%n==0)
                return x;
            qq.pop() ;    
            int xx=x*10%n;
            if(!b[xx])
            {
                qq.push(x*10);
                b[xx]=true;
    
            }
            int yy=(x*10+1)%n;
            if(!b[yy])
            {
                qq.push(x*10+1);
                b[yy]=true;
            }
        }
    
    }
    int main()
    {
        while(cin>>n)
        {
            if(!n) break;
             printf("%lld
    ",bfs());
        }
    
        return 0;
    }
  • 相关阅读:
    Windows安装使用wget
    Ubuntu16.04 安装和卸载MySQL数据库
    申请百度翻译API
    Linux配置JDK
    vmware的三种网络连接模式
    3、linux-目录管理:mkdir、rmdir、mv
    2、linux-添加组groupadd、修改组groupmod、删除组groupdel
    1、linux-用户管理useradd,usermod,userdel
    在Linux操作系统里有Ext2、Ext3、Linux swap和VFAT四种格式
    第四次作业 简易计算器
  • 原文地址:https://www.cnblogs.com/nancheng58/p/6070834.html
Copyright © 2011-2022 走看看