結果
| 問題 |
No.438 Cwwプログラミング入門
|
| コンテスト | |
| ユーザー |
char134217728
|
| 提出日時 | 2017-08-23 14:49:28 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 3,178 bytes |
| コンパイル時間 | 1,477 ms |
| コンパイル使用メモリ | 162,288 KB |
| 実行使用メモリ | 8,704 KB |
| 最終ジャッジ日時 | 2024-10-15 13:04:56 |
| 合計ジャッジ時間 | 6,357 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 94 WA * 4 |
コンパイルメッセージ
main.cpp:45:1: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type]
45 | main(){
| ^~~~
ソースコード
#include <bits/stdc++.h>
#define FOR(i,a,b) for (int i=(a);i<(b);i++)
#define FORR(i,a,b) for (int i=(a);i>=(b);i--)
#define pb push_back
#define pcnt __builtin_popcount
#define show(x) cout<<#x<<" = "<<x<<endl;
#define maxs(x,y) x = max(x,y)
#define mins(x,y) x = min(x,y)
#define fi first
#define se second
#define rng(a) a.begin(),a.end()
#define each(it,c) for(__typeof((c).begin()) it=(c).begin();it!=(c).end();it++)
#define sz(x) (int)(x).size()
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vpii;
typedef set<int> si;
typedef pair<ll,ll> pll;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<pll> vpll;
typedef set<ll> sl;
template<typename T>string join(vector<T>&v)
{stringstream s;FOR(i,0,sz(v))s<<' '<<v[i];return s.str().substr(1);}
ll gcd(ll a,ll b){if(a>b)swap(a,b);for(;a>0;b%=a,swap(a,b));return b;}
int modpow(ll a,ll n,int m){if(a==0)return a;ll p=1;for(;n>0;n/=2,a=a*a%m)if(n&1)p=p*a%m;return (int)p;}
const int iinf = 1e9;
const ll linf = 4e18;
const int mod = 1e9+7;
const double eps = 1e-10;
struct Ieq{
// solve(x, y, z) :: ax + by = z
pll no = pll(linf,linf);
pll e(ll x,ll y,ll z){if(x==1)return pll(z,0);if(x==0)return pll(0,z/y);ll m=y/x,_y=y%x,f,s,d;pll t=e(_y,x,z);f=t.se-m*t.fi,s=t.fi;if(f<0){d=abs(f/y);f+=d*y;s-=d*x;}if(s<0){d=abs(s/x);s+=d*x;f-=d*y;}return pll(f,s);}
pll solve(ll x, ll y, ll z){if(z==0)return pll(0,0);if(z<0){x*=-1;y*=-1;z*=-1;}ll _x=abs(x),_y=abs(y),g;g=gcd(_x,_y);if(g<1||z%g>0)return no;_x/=g;_y/=g;z/=g;if(_x>_y)swap(_x, _y);pll t=e(_x,_y,z);if(abs(x)>abs(y)){g=t.fi;t.fi=t.se;t.se=g;}if(x < 0)t.first *= -1;if(y < 0)t.second *= -1;return t;}
};
int x, y, z;
main(){
cin.tie(0);
ios::sync_with_stdio(false);
cin >> x >> y >> z;
if(z==x){
cout << "c\n";
return 0;
}else if(z==y){
cout << "w\n";
return 0;
}else if(z==0){
cout << "wwW\n";
return 0;
}
Ieq ieq;
pll pl = ieq.solve(x, y, z);
if(pl==ieq.no){
cout << "NO\n";
return 0;
}
ll f = pl.fi, s = pl.se, d = f/y;
ll co = linf;
pll ans = ieq.no;
if(x*y>0){
f %= y;
s += x * d;
}
if(f < 0){
f += y;
s -= x;
}
if(co > abs(f) + abs(s)){
co = abs(f) + abs(s);
ans = pll(f, s);
}
if(x*y>0){
f -= y;
s += x;
}
if(co > abs(f) + abs(s)){
co = abs(f) + abs(s);
ans = pll(f, s);
}
if(x*y>0){
d = s / x;
s %= x;
f += y * d;
}
if(co > abs(f) + abs(s)){
co = abs(f) + abs(s);
ans = pll(f, s);
}
if(x*y>0){
s -= x;
f += y;
}
if(co > abs(f) + abs(s)){
co = abs(f) + abs(s);
ans = pll(f, s);
}
if(co*2 - 1 > 10000){
cout << "NO\n";
return 0;
}
f = ans.fi;
s = ans.se;
if(f < 0){
FOR(i, 0, f*-1)cout << "c";
FOR(I, 0, s)cout << "w";
FOR(I, 0, s-1)cout << "C";
FOR(i, 0, f*-1)cout << "W";
}else if(s < 0){
FOR(i, 0, s*-1)cout << "w";
FOR(I, 0, f)cout << "c";
FOR(I, 0, f-1)cout << "C";
FOR(i, 0, s*-1)cout << "W";
}else{
FOR(i, 0, f)cout << "c";
FOR(I, 0, s)cout << "w";
FOR(I, 0, f+s-1)cout << "C";
}
cout << "\n";
return 0;
}
char134217728