結果

問題 No.438 Cwwプログラミング入門
ユーザー YazatenYazaten
提出日時 2016-10-29 00:14:27
言語 C++11
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 1,764 bytes
コンパイル時間 1,411 ms
コンパイル使用メモリ 160,756 KB
実行使用メモリ 6,824 KB
最終ジャッジ日時 2024-11-24 22:18:46
合計ジャッジ時間 8,749 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 69 WA * 27 RE * 2
権限があれば一括ダウンロードができます

ソースコード

diff #

#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define rep(i,n) for(ll i=0;i<(ll)(n);i++)
#define all(a)  (a).begin(),(a).end()
#define pb push_back
#define INF (1LL<<59)

string bio = "mourennaihasimasenn";


int f(int x){
    if(x>0)return 2*x-1;
    else if(x==0)return 0;
    else return 2*abs(x)+3;
}

void g(char ch,int x){
    if(x>0){
        rep(i,x)cout<<ch;
        rep(i,x-1)cout<<'C';
    }else if(x==0)return ;
    else{
        rep(i,abs(x)+2)cout<<ch;
        rep(i,abs(x)+1)cout<<'W';
    }
}

int main(){
    int a,b,c;
    cin>>a>>b>>c;
    
    if(c%__gcd(a,b)!=0){
        cout<<bio<<endl;
        return 0;
    }
    
    if(c==0){
        cout<<endl;
        return 0;
    }
    else if(a==0&&b==0){
        cout<<bio<<endl;
        return 0;
    }
    else if(a==0){
        if(c%b==0){
            int num = c/b;
            rep(i,num)cout<<'w';
            rep(i,num-1)cout<<'C';
            cout<<endl;
        }
        else cout<<bio<<endl;
        return 0;
    }
    else if(b==0){
        if(c%a==0){
            int num = c/a;
            rep(i,num)cout<<'c';
            rep(i,num-1)cout<<'C';
            cout<<endl;
        }
        else cout<<bio<<endl;
        return 0;
    }
    
    ll mini = INF;
    int yd,xd;
    int l = a/__gcd(a,b)*b;
    for(int x=-l;a*x<=c;x++){
        int df = c-a*x;
        if(abs(df)%b!=0)continue;
        int y = df/b;
        
        int sum =f(x)+f(y);
        if(x&&y)sum++;
        
        if(mini>sum){
            mini = sum;
            xd = x;
            yd = y;
        }
    }
    if(mini>100000)cout<<bio<<endl;
    else{
        g('c',xd);
        g('w',yd);
        if(xd&&yd)cout<<'C'<<endl;
        else cout<<endl;
    }
}
0