• 数论


    Find The Multiple
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 16995   Accepted: 6921   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

    【题目大意】

    给出一个整数n,(1 <= n <= 200)。求出任意一个它的倍数m,要求m必须只由十进制的'0'或'1'组成。

    【题目分析】

    数论 +bfs

    用到了同余定理,用bfs搜索当前位,每位都只可能是0或1,所以这是双入口的bfs,同时还涉及到了大数的知识。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int mod[524286]; 
    int main(int i)
    {
        int n;
        while(cin>>n)
        {
            if(!n)
                break;
    
            mod[1]=1%n;  
            for(i=2;mod[i-1]!=0;i++)  
                mod[i]=(mod[i/2]*10+i%2)%n;
            i--;
            int pm=0;
            while(i)
            {
                mod[pm++]=i%2;   
                i/=2;
            }
            while(pm)
                cout<<mod[--pm];  //倒序输出
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    C/C++ 子集生成算法整理
    C++ 求枚举排列的两种方法
    uva1600 Patrol Robot(不同的BFS最短路)
    C++ 已知二叉树两种遍历序列,构建二叉树
    优先队列 C++
    离散化方法
    基本模运算
    C++ 快速幂运算
    病毒通过445端口
    最新勒索软件WannaCrypt病毒感染前后应对措施
  • 原文地址:https://www.cnblogs.com/crazyacking/p/3762947.html
Copyright © 2020-2023  润新知