您的位置:首页 > 其它

洛谷P1602 Sramoc问题

2017-08-24 18:01 148 查看

P1602 Sramoc问题

题目描述

话说员工们整理好了筷子之后,就准备将快餐送出了,但是一看订单,都傻眼了:订单上没有留电话号码,只写了一个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


/*
宽搜,按位枚举
*/
#include<queue>
#include<cstdio>
#include<string>
#include<iostream>
using namespace std;
int k,m;
struct Node{
int yu;
string s;
}n[1010],temp;
bool used[1010]={0};
Node bfs(){
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);
cout<<bfs().s;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: