#24598: 求解 卡在66% 錯的都是記憶體區段錯誤 為什麼記憶體區段錯誤??


angus.93321@gmail.com (bluemoon0321)

學校 : 國立科學工業園區實驗高級中學
編號 : 139711
來源 : [114.136.48.221]
最後登入時間 :
2021-08-21 11:35:29
c423. pB 還原密碼 -- 104學年度全國資訊學科能力競賽 | From: [36.227.182.55] | 發表日期 : 2021-03-09 00:03

#include<bits/stdc++.h>

using namespace std;

int func(int r,int total ){

    if(r/10==0) return max(r,total);

    while(r/10!=0){

        total+=r%10;

        r/=10;

    }

    total+=r;

    r=total;

    return func(r,0);

}

int main(){

    ios::sync_with_stdio(0);

    cin.tie(0);

    int n,r;

    stringstream ss;

    int sum;

    set<string> se;

    string s;

    cin>>n>>r;

    cin>>s;

    ss<<s;

    ss>>sum;

    for(int i=0;i<10;i++){

        if(func(i+sum*10,0)==r){

            stringstream sss;

            string zz;

            sss<<i;

            sss>>zz;

            se.insert(zz+s);

            for(int j=0;j<n;j++){

                if(j==n-1) break;

                if(j!=n-1){

                    string k=s.substr(0,n-1-j);

                    k+=zz;

                    if(j>=1) k+=s.substr(n-1-j);

                    se.insert(k);

                }

            }

        }

    }

    auto iter1=se.begin();

    auto iter2=se.end();

    se.erase(*iter1);

    se.erase(*prev(iter2));

    for(auto aa:se) cout<<aa<<'\n';

}

 
ZeroJudge Forum