51 nod 1109 01组成的N的倍数

1109 01组成的N的倍数

基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题

 收藏

 关注

给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1。求最小的M。

例如:N = 4,M = 100。

Input

输入1个数N。(1 <= N <= 10^6)

Output

输出符合条件的最小的M。

Input示例

4

Output示例

100

思路:同上题。

#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct nond{
    string s;
    int mod;
}cur,net;
queue<nond>que;
int n;
bool vis[1000001];
int main(){
    scanf("%d",&n);
    cur.s="1";cur.mod=1;
    que.push(cur);
    while(!que.empty()){
        cur=que.front();
        que.pop();
        net.mod=(cur.mod*10)%n;
        net.s=cur.s+‘0‘;
        if(net.mod==0){
            cout<<net.s;
            return 0;
        }
        if(!vis[net.mod]){
            que.push(net);
            vis[net.mod]=1;
        }
        net.mod=(cur.mod*10+1)%n;
        net.s=cur.s+‘1‘;
        if(net.mod==0){
            cout<<net.s;
            return 0;
        }
        if(!vis[net.mod]){
            que.push(net);
            vis[net.mod]=1;
        }
    }
}
时间: 2024-08-06 22:43:21

51 nod 1109 01组成的N的倍数的相关文章

1109 01组成的N的倍数

1109 01组成的N的倍数 基准时间限制:1 秒 空间限制:131072 KB 给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1.求最小的M. 例如:N = 4,M = 100. Input 输入1个数N.(1 <= N <= 10^6) Output 输出符合条件的最小的M. Input示例 4 Output示例 100和http://www.cnblogs.com/zzuli2sjy/p/5731745.html一样: 1 #includ

51Nod 1109 01组成的N的倍数

1109 01组成的N的倍数 准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1.求最小的M. 例如:N = 4,M = 100. Input 输入1个数N.(1 <= N <= 10^6) Output 输出符合条件的最小的M. Input示例 4 Output示例 100 找一个数,应该就是搜索 一开始 我写了priority_queue 但是他

POJ 1426 Find The Multiple &amp;amp;&amp;amp; 51nod 1109 01组成的N的倍数 (BFS + 同余模定理)

Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21436   Accepted: 8775   Special Judge Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains

51 nod 1495 中国好区间

1495 中国好区间 基准时间限制:0.7 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是>=k的,且该区间的第k大的那个数,一定大于等于T.那么问题来了,阿尔法想知道有多少好的区间. 由于阿尔法的序列长度实在是太大了,无法在规定时间内读入. 他想了一个绝妙的方法. 读入a[0],b,c,p,则a[i]=(a[i-1]*b+c)mod p. 样例解释: a1~a5分别为47,135,247,3

51 nod 1766 树上的最远点对(线段树+lca)

1766 树上的最远点对 基准时间限制:3 秒 空间限制:524288 KB 分值: 80 难度:5级算法题 n个点被n-1条边连接成了一颗树,给出a~b和c~d两个区间,表示点的标号请你求出两个区间内各选一点之间的最大距离,即你需要求出max{dis(i,j) |a<=i<=b,c<=j<=d} (PS 建议使用读入优化) Input 第一行一个数字 n n<=100000. 第二行到第n行每行三个数字描述路的情况, x,y,z (1<=x,y<=n,1<

51 nod 1439 互质对(Moblus容斥)

1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 有n个数字,a[1],a[2],…,a[n].有一个集合,刚开始集合为空.然后有一种操作每次向集合中加入一个数字或者删除一个数字.每次操作给出一个下标x(1 ≤ x ≤ n),如果a[x]已经在集合中,那么就删除a[x],否则就加入a[x]. 问每次操作之后集合中互质的数字有多少对. 注意,集合中可以有重复的数字,两个数字不同当且仅当他们的下标不同. 比如a[

51 nod 1188 最大公约数之和 V2

1188 最大公约数之和 V2 题目来源: UVA 基准时间限制:2 秒 空间限制:262144 KB 分值: 160 难度:6级算法题 给出一个数N,输出小于等于N的所有数,两两之间的最大公约数之和. 相当于计算这段程序(程序中的gcd(i,j)表示i与j的最大公约数): G=0; for(i=1;i<N;i++) for(j=i+1;j<=N;j++) { G+=gcd(i,j); } Input 第1行:1个数T,表示后面用作输入测试的数的数量.(1 <= T <= 5000

51 nod 1055 最长等差数列(dp)

1055 最长等差数列 基准时间限制:2 秒 空间限制:262144 KB 分值: 80 难度:5级算法题 N个不同的正整数,找出由这些数组成的最长的等差数列. 例如:1 3 5 6 8 9 10 12 13 14 等差子数列包括(仅包括两项的不列举) 1 3 5 1 5 9 13 3 6 9 12 3 8 13 5 9 13 6 8 10 12 14 其中6 8 10 12 14最长,长度为5. Input 第1行:N,N为正整数的数量(3 <= N <= 10000). 第2 - N+1行

51 nod 1610 路径计数(Moblus+dp)

1610 路径计数 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 路径上所有边权的最大公约数定义为一条路径的值. 给定一个有向无环图.T次修改操作,每次修改一条边的边权,每次修改后输出有向无环图上路径的值为1的路径数量(对1,000,000,007取模). Input 第一行两个整数n和m,分别表示有向无环图上的点数和边数.(1<=n<=100,1<=m<=50,000) 第2~m+1行每行三个数x,y,z,表示有一条从x到y权值为z的边.(1