題目連結: https://zerojudge.tw/ShowProblem?problemid=c423
# 解題思路
運用 set 紀錄所有的組合吧!!(set 的好處事會自動排序)
string 也有 insert 功能喔!!(別忘了~)
# 程式碼
#include<bits/stdc++.h> | |
using namespace std; | |
int n,r,yes,tmp; | |
string str; | |
void dgt(int& num) | |
{ | |
while(num>=10){ | |
tmp=0; | |
while(num){ | |
tmp+=num%10; | |
num/=10; | |
} | |
num=tmp; | |
} | |
return; | |
} | |
int main() | |
{ | |
while(cin >> n>>r){ | |
set<string>ans; | |
set<string>::iterator it; | |
cin >> str; | |
for(int i=0;i<10;i++){ | |
int num=i; | |
for(int j=0;j<str.size();j++)num+=str[j]-'0'; | |
dgt(num); | |
if(r==num)for(int j=0;j<=str.size();j++){ | |
char tmpIstr=(char)(i+'0'); | |
string tmpstr = str,t2; | |
t2+=tmpIstr; | |
tmpstr.insert(j,t2); | |
ans.insert(tmpstr); | |
} | |
} | |
yes=0; | |
if(ans.size()==1){ | |
for(int i=0;i<n;i++)cout<<0; | |
cout <<"\n"; | |
} | |
while(ans.size()>1){ | |
it=ans.begin(); | |
if(yes)cout <<*it<<"\n"; | |
ans.erase(it); | |
yes=1; | |
} | |
} | |
return 0; | |
} |