題目連結: 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;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay