結果

問題 No.438 Cwwプログラミング入門
ユーザー uafr_cs
提出日時 2016-10-29 00:07:17
言語 Java
(openjdk 23)
結果
WA  
実行時間 -
コード長 3,360 bytes
コンパイル時間 2,386 ms
コンパイル使用メモリ 89,744 KB
実行使用メモリ 55,792 KB
最終ジャッジ日時 2024-11-24 22:07:54
合計ジャッジ時間 17,957 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 89 WA * 7 RE * 2
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Main {
	
	public static long exec(long x, long y, char[] program){
		LinkedList<Long> stack = new LinkedList<Long>();
		
		for(final char ch : program){
			switch(ch){
			case 'c': stack.addFirst(x); break;
			case 'w': stack.addFirst(y); break;
			case 'C': 
				final long a_c = stack.poll();
				final long b_c = stack.poll();
				stack.addFirst(a_c + b_c);
				break;
			case 'W': 
				final long a_w = stack.poll();
				final long b_w = stack.poll();
				stack.addFirst(a_w - b_w);
				break;
			}
		}
		
		return stack.poll();
	}
	
	public static class Ref<T> {
		T value;
		
		public void setValue(T value){
			this.value = value;
		}
		
		public T getValue(){
			return value;
		}
	}
	
	public static long gcd(long a, long b){
		return b == 0 ? a : gcd(b, a % b);
	}
	
	public static long extcdf(long a, long b, Ref<Long> x, Ref<Long> y){
		long g = a;
		x.setValue(1l);
		y.setValue(0l);
		
		if(b != 0){
			g = extcdf(b, a % b, y, x);
			y.setValue(y.getValue() - (a / b) * x.getValue());
		}
		
		return g;
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		final long x = sc.nextLong();
		final long y = sc.nextLong();
		final long z = sc.nextLong();
		
		final long gcd = gcd(x, y);
		if(z % gcd != 0){
			System.out.println("mourennaihasimasenn");
		}else{
			LinkedList<Character> answer_list = new LinkedList<>();
			long curr_value = 0;
			while(curr_value != z && answer_list.size() <= 10000){
				if(curr_value < z){
					final long diff = z - curr_value;
					
					if(x > y){
						if(diff == y){
							answer_list.addLast('w');
							if(answer_list.size() != 1){ answer_list.addLast('C'); }
							curr_value += y;
						}else{
							answer_list.addLast('c');
							if(answer_list.size() != 1){ answer_list.addLast('C'); }
							curr_value += x;
						}
					}else{
						if(diff == x){
							answer_list.addLast('c');
							if(answer_list.size() != 1){ answer_list.addLast('C'); }
							curr_value += x;
						}else{
							answer_list.addLast('w');
							if(answer_list.size() != 1){ answer_list.addLast('C'); }
							curr_value += y;
						}
					}
				}else{
					final long diff = curr_value - z;
					
					if(x > y){
						if(diff == x){
							answer_list.addFirst('c');
							if(answer_list.size() != 1){ answer_list.addLast('W'); }
							curr_value -= x;
						}else{
							answer_list.addFirst('w');
							if(answer_list.size() != 1){ answer_list.addLast('W'); }
							curr_value -= y;
						}
					}else{
						if(diff == y){
							answer_list.addFirst('w');
							if(answer_list.size() != 1){ answer_list.addLast('W'); }
							curr_value -= y;
						}else{
							answer_list.addFirst('c');
							if(answer_list.size() != 1){ answer_list.addLast('W'); }
							curr_value -= x;
						}
					}
				}
			}
			
			//System.out.println(answer_list);
			
			if(curr_value == z && answer_list.size() <= 10000){
				StringBuilder sb = new StringBuilder();
				for(final char ch : answer_list){
					sb.append(ch);
				}
				System.out.println(sb);
			}else{
				System.out.println("mourennaihasimasenn");
			}
		}
	}
}
0