2020 년 '원광 배' 광 둥 오 컴퓨터 프로 그래 밍 대회 온라인 자격 경기 문제 풀이 1

2020 년 '원광 배' 광 둥 오 컴퓨터 프로 그래 밍 대회 온라인 자격 경기 문제 풀이 2
제목 이 너무 많아 두 편의 문장 으로 나 뉘 어 총 결 되 었 기 때문에, 이 편 은 앞의 1 ~ 10 문제 이다.게다가 부두 의 문장 이 너무 길 어서 거푸집 을 마지막 에 놓 았 다.
뭔 가 잘 모 르 는 얘 기 가 있 으 면 댓 글 을 환영 합 니 다.
글 목록
  • A. Alice 의 비밀
  • B. 오늘 무슨 요일
  • C. 샤 오 밍 의 영어 숙제
  • D. 세 줄 로 나 누 기
  • E. 타격 대상
  • F. 서열 계수
  • G. 강박 증
  • H. 신형 관상 사랑 바이러스
  • I. 기 말 표창
  • J. 최소 특징
  • ends: 코드 헤드
  • A. Alice 의 비밀
    사고방식: 시 뮬 레이 션 하면 돼. 구덩이 얘 기 좀 해 봐.
  • 시간 은 문자열 일 수도 있 고 숫자 가 아 닙 니 다.
  • 두 번 째 문자열 은 다른 문 자 를 포함 할 수 있 습 니 다.

  • 코드:
    const int manx=1e6+5;
    
    ll day[13]={
         0,31,28,31,30,31,30,31,31,30,31,30,31};
    
    bool pdsb(string s){
         
        if(s.size()!=8) return true;
        for(int i=0;i<s.size();i++){
         
            if(s[i]<='9'&&s[i]>='0') continue;
            else return true;
        }
        ll year=0,mon=0,da=0;
        for(int i=0;i<4;i++) year=year*10+(s[i]-'0');
        if(year<1900||year>2020) return true;
    
        for(int i=4;i<6;i++) mon=mon*10+(s[i]-'0');
        if(mon<1||mon>12) return true;
    
        for(int i=6;i<8;i++) da=da*10+(s[i]-'0');
        ll sb=day[mon];
        if(mon==2 && (year%400==0||(year%4==0&&year%100))) sb++;
        if(da<1||da>sb) return true;
        return false;
    }
    bool pds(string s){
         
        for(int i=0;i<s.size();i++){
         
            if(s[i]<='z'&&s[i]>='a') continue;
            else if(s[i]<='Z'&&s[i]>='A') continue;
            else if(s[i]==' ') continue;
            else return true;
        }
        return false;
    }
    int main(){
         
        string sb,s;
        while(cin>>sb){
         
            ll k=0;
            getchar(); getline(cin,s);
            if(pdsb(sb)||pds(s)){
         
                cout<<"none"<<endl;
                continue;
            }
            for(int i=0;i<sb.size();i++) k+= sb[i]-'0';
            while(k>=10){
         
                ll x=0;
                while(k){
         
                    x+=k%10; k/=10;
                }
                k=x;
            }
            ll n=s.size();
            for(int i=0;i<n;i++){
         
                if(s[i]==' ') cout<<'#';
                if(s[i]>='a'&&s[i]<='z'){
         
                    cout<<
                    (char)(((s[i]-'a'+k)%26)+'a')
                    ;
                }
                if(s[i]>='A'&&s[i]<='Z'){
         
                    cout<<
                    (char)(((s[i]-'A'+k)%26)+'A')
                    ;
                }
            }
            cout<<endl;
        }
        return 0;
    }
    

    B. 오늘 무슨 요일 이에 요?
    사고: 시 뮬 레이 션 을 하면 됩 니 다. 매년 윤년 인지 아 닌 지 를 잘 판단 하고 1 년 에 한 번 씩 줄 이면 됩 니 다.
    코드:
    ll day[13]={
         0,31,28,31,30,31,30,31,31,30,31,30,31};
    
    ll a,b,c,s;
    
    void pd(ll a){
         
        if(a%4==0&&a%100){
         
            s-=day[2]; day[2]=29; s+=day[2];
        }
        else if(a%400==0){
         
            s-=day[2]; day[2]=29; s+=day[2];
        }
        else{
         
            s-=day[2]; day[2]=28; s+=day[2];
        }
    }
    void cal(){
         
        ll cnt=0;
        for(int i=1;i<b;i++) cnt+=day[i];
        cnt+=c;
        --a;
        while(a>=2000){
         
            pd(a);
            cnt+=s;
            a--;
        }
        ll d=cnt/4;
        if(cnt%4) d++;
        cout<<d<<" ";
        if(cnt%4==1) cout<<1<<endl;
        else if(cnt%4==2) cout<<2<<endl;
        else if(cnt%4==3) cout<<3<<endl;
        else cout<<4<<endl;
    }
    
    int main(){
         
        for(int i=1;i<=12;i++) s+=day[i];
        while(cin>>a>>b>>c){
         
            pd(a);
            cal();
        }
        return 0;
    }
    

    C. 샤 오 밍 의 영어 숙제
    사고방식: 맵 은 단어의 출현 횟수 를 통계 하고 출현 횟수 가 1 인 단어 가 n / 2 보다 큰 지 판단 한다.
    코드:
    map<string,ll>vis;
    int main(){
         
        string s;
        while(1){
         
            getline(cin,s);
            if(s[0]=='#') break;
            vis.clear();
            ll cnt=1;
            ll k=0;
          //  cout<
            for(int i=0;i<s.length();i++){
         
                if(s[i]!=' ') continue;
                string c="";
                for(int j=k;j<i;j++)
                    c+=s[j];
                vis[c]++; cnt++; k=i+1;
            //    cout<
            }
            string c="";
            for(int j=k+1;j<s.size();j++)
                    c+=s[j];
            vis[c]++; cnt++;
            ll ans=0;
            for(auto x: vis){
         
                if(x.second==1) ans++;
            }
           // cout<
            if(ans>=cnt/2) put1();
            else put2();
        }
        return 0;
    }
    

    D. 세 줄 로 나 누 기
    사고방식: 3 에 나머지 를 취하 고 상황 에 따라 출력 한다.
    코드:
    
    vector<ll>g[5];
    
    int main(){
         
    	ll n;  io;  cin>>n;
    	//while(cin>>n){
         
            g[1].clear(); g[2].clear(); g[3].clear();
            for(int i=1;i<=n;i++){
         
                ll x; cin>>x;
                g[i%3].pb(x);
            }
            for(int i=1;i<3;i++){
         
                for(int j=0;j<g[i].size();j++)
                    cout<<g[i][j]<<" ";
                cout<<endl;
            }
            for(int j=0;j<g[0].size();j++)
                    cout<<g[0][j]<<" ";
                cout<<endl;
    	//}
    	return 0;
    }
    

    E. 목표물 타격
    생각:
    코드:

    F .

    G .

    :map 。

    map<ll,ll>vis;
    
    
    int main(){
         
        io;
        ll n; cin>>n; ll ans=0,res=0;
        for(int i=1;i<=n;i++){
         
            ll x; cin>>x;
            vis[x]++;
            if(vis[x]>res) res=vis[x],ans=x;
        }
        cout<<ans<<endl;
        return 0;
    }
    

    H .

    I .

    : , + , 。

    struct node{
         
        ll id;
        ll b,c,d;
        ll s;
    }a[manx];
    bool cmp(node a,node b){
         
        if(a.s==b.s){
         
            if(a.b==b.b) return a.id<b.id;
            return a.b>b.b;
        }
        return a.s>b.s;
    }
    
    int main(){
         
    	ll n;  io;  cin>>n;
    	for(int i=1;i<=n;i++){
         
            a[i].id=i;
            cin>>a[i].b>>a[i].c>>a[i].d;
            a[i].s=a[i].b+a[i].c+a[i].d;
    	}
    	sort(a+1,a+1+n,cmp);
    	for(int i=1;i<=5;i++){
         
            cout<<a[i].id<<" "<<a[i].b<<" "<<a[i].c<<" "<<a[i].d<<endl;
    	}
    	return 0;
    }
    

    J .

    : 90° 1 , 。

    char c[10];
    ll ans,ans1,ans2,ans3;
    ll lg[10];
    
    ll pd(){
         
        ll x=0;
        for(int k=1;k<=8;k++){
         
            x+= ( (c[9]-'0')^(c[k]-'0') )*lg[8-k];
        }
        return x;
    }
    
    int main(){
         
        ll n; cin>>n;
        lg[0]=1;
        for(int i=1;i<=10;i++) lg[i]=lg[i-1]*2;
        while(n--){
         
            ans=ans1=ans2=ans3=0;
            cin>>c[1]>>c[2]>>c[3]>>c[8]>>c[9]>>c[4]>>c[7]>>c[6]>>c[5];
            ans=pd();
            char x=c[1];
            swap(c[3],c[5]); swap(c[3],c[7]); swap(c[1],c[3]);
            swap(c[2],c[4]); swap(c[2],c[6]); swap(c[2],c[8]);
            ans1=pd();
            swap(c[3],c[5]); swap(c[3],c[7]); swap(c[1],c[3]);
            swap(c[2],c[4]); swap(c[2],c[6]); swap(c[2],c[8]);
            ans2=pd();
            swap(c[3],c[5]); swap(c[3],c[7]); swap(c[1],c[3]);
            swap(c[2],c[4]); swap(c[2],c[6]); swap(c[2],c[8]);
            ans3=pd();
            ans=min(ans,ans1); ans=min(ans,ans2); ans=min(ans,ans3);
            cout<<ans<<endl;
        }
        return 0;
    }
    

    ends:

    #include
    #define mp make_pair
    #define pb push_back
    #define ll long long
    #define fi first
    #define se second
    #define inf 0x3f3f3f3f
    #define io std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
    using namespace std;
    inline ll read(){
         ll s=0,w=1;char ch=getchar();
    while(ch<'0'||ch>'9'){
         if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();return s*w;}
    void put1(){
          puts("Yes") ;}void put2(){
          puts("No") ;}void put3(){
          puts("-1"); }
    ll qp(ll a,ll b, ll p){
         ll ans = 1;while(b){
         if(b&1){
         ans = (ans*a)%p;--b;}a =
    (a*a)%p;b >>= 1;}return ans%p;}
    const int mo=998244353; const int mod=1000000007;
    
    const int manx=1e6+5;
    int main(){
         
    
        return 0;
    }
    
    

    좋은 웹페이지 즐겨찾기