洛谷 P1602 Sramoc问题

简介: 题目描述 话说员工们整理好了筷子之后,就准备将快餐送出了,但是一看订单,都傻眼了:订单上没有留电话号码,只写了一个sramoc(k,m)函数,这什么东西?什么意思?于是餐厅找来了资深顾问团的成员,YQ,SC,HQ,经过大量的查阅,大家获得了一些信息,Sramoc ( K , M ) 表示用数字0、1、2…、K-1组成的自然数中能被M整除的最小数。

题目描述

话说员工们整理好了筷子之后,就准备将快餐送出了,但是一看订单,都傻眼了:订单上没有留电话号码,只写了一个sramoc(k,m)函数,这什么东西?什么意思?于是餐厅找来了资深顾问团的成员,YQ,SC,HQ,经过大量的查阅,大家获得了一些信息,Sramoc ( K , M ) 表示用数字0、1、2…、K-1组成的自然数中能被M整除的最小数。例如 K=2,M=7的时候,Sramoc( 2 , 7 ) = 1001。自然电话号码就是1001,为了尽快将快餐送出,电脑组的童鞋们埋头算起了这个齐葩的号码。。。

输入输出格式

输入格式:

 

第1行为两个整数 k, m (2≤k≤10, 0≤m≤1000)。

 

输出格式:

 

仅1行,那个电话号码(最小的数)。

 

输入输出样例

输入样例#1:
2 7
输出样例#1:
1001

吐槽

  看题面应该是某次比赛的题目之一,比赛的题目背景都是连贯的,打比赛一大乐趣就是欣赏各种有趣的题目背景了。

  被搬到公共题库后,题目背景就支离破碎了。丧失了读题目背景的乐趣,实在是一种损失……

解题思路

  乍一看题,感觉是一道普通的数位搜索,类似USACO1.5中一道名为 特殊的质数肋骨(Superprime Rib)的搜索题。

  于是按照题意敲了一波广搜,每次拓展时按照0、1、2…k-1的顺序在已有数字后面接数字,这样就能保证搜索到的数字是递增出现的,第一个搜到的满足条件的数字一定是最小的。交上去得了80分,一看,两个点WA,输出负数,应该是溢出了。把int改成long long,90分,还是WA了一个点,依然溢出。换成__int128,交上去还是90,然而那个不过的点TLE了……随着数位的增多,搜到的数是成指数型增长的啊……

  瞄了一眼题解

  这题正解可以是这样——在广搜时,队列里的每个元素由一个高精度的数(字符串)和那个数模m的值。拓展节点时,如果拓展得到的余数为零,直接返回输出即可,要是这个余数不为零且之前没有出现过,就加入队列,之前出现过,就舍弃吧。我不太明白为何出现过的相同的余数不用加入队列,是他们拓展结果重复吗?先留坑

源代码

#include<queue>
#include<cstdio>
#include<string>
#include<iostream>
int k,m;
struct Node{
    int yu;
    std::string s;
}n[1010],temp;
bool used[1010]={0};
Node bfs()
{
    std::queue<Node> q;
    for(int i=1;i<k;i++)
    {
        temp.yu=i%m;
        temp.s="";
        temp.s+=i%m+'0';
        q.push(temp);
        used[i%m]=1;
    }
    while(!q.empty())
    {
        temp=q.front();
        q.pop();
        for(int i=0;i<k;i++)
        {
            Node v=temp;
            v.s=temp.s;
            v.s+=i+'0';
            v.yu=(temp.yu*10+i)%m;
            if(v.yu==0) return v;
            if(!used[v.yu]) q.push(v),used[v.yu]=1;
        }
    }
}


int main()
{
    scanf("%d%d",&k,&m);
    std::cout<<bfs().s;
    return 0;
}

 

目录
相关文章
|
9月前
|
索引
洛谷P1231 教辅的组成
洛谷P1231 教辅的组成
洛谷1102 A-B 暴力法
判断第 i 个数和 i 之后的每一个数的绝对值是否等于目标结果
|
12月前
|
存储 人工智能 算法
AcWing - 寒假每日一题2023(DAY 6——DAY 10)
AcWing - 寒假每日一题2023(DAY 6——DAY 10)
|
12月前
|
机器学习/深度学习 测试技术
AcWing - 寒假每日一题2023(DAY 16——DAY 20)
AcWing - 寒假每日一题2023(DAY 16——DAY 20)
|
机器学习/深度学习 编译器
【AcWing周赛】AcWing第85场周赛
目录 &lt;一&gt;Acwing 4791. 死或生 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 &lt;二&gt;Acwing 4792. 最大价值 一、题目 1、原题链接 2、题目描述 二、解题报告: 1、思路分析 2、时间复杂度 3、代码详解 &lt;三&gt;Acwing 4793. 危险程度 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 &lt;四&gt; 知识风暴 1、排序不等式 2、贪心法 3、数据范围 4、并查集 基本操作
63 0
|
机器学习/深度学习 人工智能 安全
【AcWing周赛】AcWing第86场周赛
目录 <一>AcWing 4794. 健身 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 <二>AcWing 4795. 安全区域 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 <三>AcWing 4796. 删除序列 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
59 0
洛谷 P1469 找筷子
题目描述 经过一段时间的紧张筹备,电脑小组的“RP餐厅”终于开业了,这天,经理LXC接到了一个定餐大单,可把大家乐坏了!员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘手的问题,筷子!CX小朋友找出了餐厅中所有的筷子,但遗憾的是这些筷子长短不一,而我们都知道筷子需要长度一样的才能组成一双,更麻烦的是CX找出来的这些筷子数量为奇数,但是巧合的是,这些筷子中只有一只筷子是落单的,其余都成双,善良的你,可以帮CX找出这只落单的筷子的长度吗? 输入输出格式 输入格式:   第一行读入一个数N,它代表CX找到的筷子的根数。
1189 0
|
算法
洛谷 P1816 忠诚
题目描述 老管家是一个聪明能干的人。他为财主工作了整整10年,财主为了让自已账目更加清楚。要求管家每天记k次账,由于管家聪明能干,因而管家总是让财主十分满意。但是由于一些人的挑拨,财主还是对管家产生了怀疑。
1142 0