#42568: 一個蠻奇怪的解法?


yp11251060@yphs.tp.edu.tw (807-20 何宗原)

學校 : 臺北市私立延平高級中學
編號 : 237382
來源 : [220.137.9.186]
最後登入時間 :
2024-11-04 22:56:53
c086. 00402 - M*A*S*H -- UVa402 | From: [220.137.1.49] | 發表日期 : 2024-10-03 00:42

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long n,m,t=1;
    while(cin>>n>>m){
        long long a[20],sum=n;
        string s="";
        for(int i=0;i<20;i++){
            cin>>a[i];
        }
        for(int i=1;i<=n;i++){                    //將1~n變成字串(像若n=20則s=01020304......181920)
            if(i/10==0){
                s+="0";
                s+=to_string(i);
            }
            else{
                s+=to_string(i);
            }
        }
        for(int i=0;i<20;i++){
             for(int j=(a[i]-1)*2;j<s.size();){   //刪掉a[i]裡的東西(像若a[i]=3, s.size()=10則刪掉03,06,09)
                if(sum>m){
                    s.erase(j,2);
                    j+=(a[i]-1)*2;
                    sum--;
                }
                else{
                    break;
                }
            }
/*
例如: a[i]=3,s=01020304050607080910
1.j=(3-1)*2=4,s變成010204050607080910
2.j=4+4=8,s變成0102040507080910
2.j=8+4=12,s變成01020405070810
*/
        }
        cout<<"Selection #"<<t<<'\n';
        for(int i=0;i<s.size()-1;i+=2){
            if(s[i]=='0'){
                cout<<s[i+1]<<' ';
            }
            else{
            cout<<s[i]<<s[i+1]<<' ';
            }
        }
        cout<<'\n'<<'\n';
        t++;
        }
    return 0;
}

 

 

 
#42569: Re: 一個蠻奇怪的解法?


yp11251060@yphs.tp.edu.tw (807-20 何宗原)

學校 : 臺北市私立延平高級中學
編號 : 237382
來源 : [220.137.9.186]
最後登入時間 :
2024-11-04 22:56:53
c086. 00402 - M*A*S*H -- UVa402 | From: [220.137.1.49] | 發表日期 : 2024-10-03 00:44

#include
using namespace std;
int main(){
    long long n,m,t=1;
    while(cin>>n>>m){
        long long a[20],sum=n;
        string s="";
        for(int i=0;i<20;i++){
            cin>>a[i];
        }
        for(int i=1;i<=n;i++){                    //將1~n變成字串(像若n=20則s=01020304......181920)
            if(i/10==0){
                s+="0";
                s+=to_string(i);
            }
            else{
                s+=to_string(i);
            }
        }
        for(int i=0;i<20;i++){
             for(int j=(a[i]-1)*2;j
                if(sum>m){
                    s.erase(j,2);
                    j+=(a[i]-1)*2;
                    sum--;
                }
                else{
                    break;
                }
            }
/*
例如: a[i]=3,s=01020304050607080910
1.j=(3-1)*2=4,s變成010204050607080910
2.j=4+4=8,s變成0102040507080910
2.j=8+4=12,s變成01020405070810
*/
        }
        cout<<"Selection #"<
        for(int i=0;i
            if(s[i]=='0'){
                cout<
            }
            else{
            cout<
            }
        }
        cout<<'\n'<<'\n';
        t++;
        }
    return 0;
}

 

 

要改成

/*
例如: a[i]=3,s=01020304050607080910
1.j=(3-1)*2=4,s變成010204050607080910
2.j=4+4=8,s變成0102040507080910
3.j=8+4=12,s變成01020405070810
*/
不好意思

 

 
ZeroJudge Forum