結果
問題 |
No.438 Cwwプログラミング入門
|
ユーザー |
![]() |
提出日時 | 2016-10-29 00:05:52 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,029 bytes |
コンパイル時間 | 1,006 ms |
コンパイル使用メモリ | 99,396 KB |
実行使用メモリ | 43,812 KB |
最終ジャッジ日時 | 2024-11-24 22:05:07 |
合計ジャッジ時間 | 9,790 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 54 WA * 37 RE * 7 |
ソースコード
#include <cstdio> #include <cstring> #include <string> #include <cmath> #include <cassert> #include <iostream> #include <algorithm> #include <stack> #include <queue> #include <vector> #include <set> #include <map> #include <bitset> #include <functional> using namespace std; #define repl(i,a,b) for(int i=(int)(a);i<(int)(b);i++) #define rep(i,n) repl(i,0,n) #define mp(a,b) make_pair((a),(b)) #define pb(a) push_back(a) #define all(x) (x).begin(),(x).end() #define dbg(x) cout<<#x"="<<(x)<<endl #define fi first #define se second #define INF 2147483600 // a*x + b*y = gcd(a, b) int extgcd(int a, int b, int& x, int& y){ int d=a; if(b!=0){ d=extgcd(b, a%b, y, x); y-=(a/b)*x; } else { x=1; y=0; } return d; } bool solve(){ int x,y,z; cin>>x>>y>>z; int a,b; int g = extgcd(x, y, a, b); // ax + by = g if(z%g!=0 || (a==0 && b==0)){ return false; } string push="", pop=""; bool flg=false; string xx="c", yy="w"; if(x<y){ swap(x,y); swap(xx,yy); } if(z > x){ if(z/x > 5000) return false; rep(i, z/x){ push += xx; pop += "C"; } z = z%x; flg=true; } if(z > y){ if(pop.size() + z/y > 5000) return false; rep(i, z/y){ push += yy; pop += "C"; } z = z%b; flg=true; } if(z==0){ cout<<push<<pop.substr(1)<<endl; return true; } string res; if(flg) res = push + pop.substr(1); if(res.size() + 2*(a+b) > 10000) return false; push="";pop=""; if(a<0){ rep(i,-a) push += "c"; rep(i,-a) pop = "W" + pop; } if(b<0){ rep(i,-b) push += "w"; rep(i,-b) pop = "W" + pop; } if(a>0){ rep(i,a) push += "c"; rep(i,a) pop = "C"+pop; } if(b>0){ rep(i,b) push += "w"; rep(i,b) pop = "C"+pop; } pop = pop.substr(1); rep(i,z/g){ res += push + pop; if(i!=0) res += "C"; } if(flg) res += "C"; if(res.size()>10000) return false; else cout<<res<<endl; return true; } int main(){ if(!solve()) cout<<"mourennaihasimasenn"<<endl; return 0; }