結果
| 問題 |
No.438 Cwwプログラミング入門
|
| コンテスト | |
| ユーザー |
HeyHey0111
|
| 提出日時 | 2016-10-28 23:40:23 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 2,500 bytes |
| コンパイル時間 | 925 ms |
| コンパイル使用メモリ | 94,344 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-24 20:28:34 |
| 合計ジャッジ時間 | 7,106 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 78 WA * 11 RE * 9 |
ソースコード
#define _USE_MATH_DEFINES
#include<iostream>
#include<sstream>
#include<vector>
#include<string>
#include<algorithm>
#include<map>
#include<unordered_map>
#include<math.h>
#include<iterator>
using namespace std;
long long dp[1<<12+1];
template<typename T>
T gcd( T m, T n )
{
// 引数に0がある場合は0を返す
if ( ( 0 == m ) || ( 0 == n ) )
return 0;
// ユークリッドの方法
while( m != n )
{
if ( m > n ) m = m - n;
else n = n - m;
}
return m;
}
template<typename T>
T* hoge( T m, T n )
{
T* ans = new T[3];
T d[2]={m,n};
T x[2]={1,0};
T y[2]={0,1};
while(d[1]!=0){
T q = d[0]/d[1];
T tmp =d[0];
d[0]=d[1];
d[1]=tmp%d[1];
tmp = x[0];
x[0]=x[1];
x[1]=tmp-q*x[1];
tmp = y[0];
y[0]=y[1];
y[1]=tmp-q*y[1];
ans[0]=x[0];
ans[1]=y[0];
ans[2]=d[0];
}
return ans;
}
template<typename T>
T value(T a,T b,T c,T t,T u,T v){
return abs(b*t+u*c) + abs(-a*t+v*c);
}
int main(){
string fuck="mourennaihasimasenn";
long long x,y,z;
cin >> x >> y >> z;
long long xygcd=gcd(x,y);
if( z % xygcd!= 0){
cout <<fuck<<endl;
return 0;
}
x/=xygcd;
y/=xygcd;
z/=xygcd;
long long *ho = hoge(x,y);
long long a,b,c,u,v;
a = x/ho[2];
b = y/ho[2];
c = z/ho[2];
u = ho[0];
v = ho[1];
long long lmin=-10000000000;
long long lmax= 10000000000;
for (int i = 0; i < 100000; i++) {
long long center1 = (lmax-lmin)/3+lmin;
long long center2 = (lmax-lmin)/3*2+lmin;
if(value(a,b,c,center1,u,v)>value(a,b,c,center2,u,v)){
lmin = center1;
}else{
lmax = center2;
}
}
int prefix = (lmin+lmax)/2;
int buf = 100;
for (int i = -buf; i < buf; i++) {
long long t =prefix+i;
if(value(a,b,c,t,u,v)>5010)continue;
string output;
for (int j = 0; j < abs(b*t+u*c); j++) {
output+='c';
}
if(b*t+u*c<0){
output+='c';
output+='c';
for (int j = 0; j < abs(b*t+u*c)+1; j++) {
output+='W';
}
}else{
for (int j = 0; j < abs(b*t+u*c)-1; j++) {
output+='C';
}
}
for (int j = 0; j < abs(-a*t+v*c); j++) {
output+='w';
}
if(-a*t+v*c<0){
for (int j = 0; j < abs(-a*t+v*c)-1; j++) {
output+='W';
}
}else{
for (int j = 0; j < abs(-a*t+v*c)-1; j++) {
output+='C';
}
}
output+='C';
if(output.length()<10000){
cout << output<<endl;
return 0;
}
}
cout << fuck<<endl;
}
HeyHey0111