题目描述
Sramoc ( K , M ) 表示用数字0、1、2…、K-1组成(数位拼接)的正整数中能被M整除的最小数。给定 K、M,求Sramoc ( K,M )。例如 K=2,M=7的时候,Sramoc( 2 , 7 ) = 1001。
输入格式:
第一行为两个整数K、M满足2≤K≤10、k≤M≤1000。
输出格式:
输出Sramoc(K,M)
样例输入:
2 7
样例输出:
1001
数据范围:
2≤K≤10、1≤M≤1000。
时间限制:
1000
空间限制:
65536
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
string S(ll k,ll m){
unordered_set<string> v;
queue<pair<ll,string>> q;
q.push({0,"0"});
while(!q.empty()){
auto [num,s]=q.front();
q.pop();
for(ll i=0;i<k;i++){
ll tn=num*10+i;
string ns=s+to_string(i);
if(tn%m==0 && tn!=0)return ns;
if(v.find(ns)==v.end()){
v.insert(ns);
q.push({tn,ns});
}
}
}
}
int main(){
ll k,m;
cin>>k>>m;
string ans=S(k,m);
bool flg=false;
for(ll i=0;i<ans.size();i++){
if(ans[i]!='0')flg=true;
if(flg)cout<<ans[i];
}
return 0;
}