結果

問題 No.3191 Operation Puzzle
コンテスト
ユーザー aaa aa
提出日時 2025-12-09 22:17:08
言語 C#
(.NET 8.0.404)
結果
AC  
実行時間 79 ms / 2,000 ms
コード長 1,991 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 8,117 ms
コンパイル使用メモリ 169,676 KB
実行使用メモリ 187,688 KB
最終ジャッジ日時 2025-12-09 22:17:23
合計ジャッジ時間 13,228 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 45
権限があれば一括ダウンロードができます
コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.csproj を復元しました (110 ミリ秒)。
  main -> /home/judge/data/code/bin/Release/net8.0/main.dll
  main -> /home/judge/data/code/bin/Release/net8.0/publish/

ソースコード

diff #
raw source code

using System;

class Program
{
    static void Main()
    {
        // 入力を読み取る
        int N = int.Parse(Console.ReadLine());
        string[] input = Console.ReadLine().Split();
        int[] A = new int[N];
        for (int i = 0; i < N; i++)
        {
            A[i] = int.Parse(input[i]);
        }
        int X = int.Parse(Console.ReadLine());

        // 4x4の表を全探索
        int[,] f = new int[4, 4];

        // 1, 2, 3, 4 の組み合わせで表を試す
        for (int i1 = 1; i1 <= 4; i1++)
        {
            for (int i2 = 1; i2 <= 4; i2++)
            {
                for (int i3 = 1; i3 <= 4; i3++)
                {
                    for (int i4 = 1; i4 <= 4; i4++)
                    {
                        // 表 f を設定
                        f[0, 0] = i1; f[0, 1] = i2; f[0, 2] = i3; f[0, 3] = i4;
                        f[1, 0] = i2; f[1, 1] = i3; f[1, 2] = i4; f[1, 3] = i1;
                        f[2, 0] = i3; f[2, 1] = i4; f[2, 2] = i1; f[2, 3] = i2;
                        f[3, 0] = i4; f[3, 1] = i1; f[3, 2] = i2; f[3, 3] = i3;

                        // 左結合で f(A1, A2, ..., AN) を計算する
                        int result = A[0];
                        for (int i = 1; i < N; i++)
                        {
                            result = f[result - 1, A[i] - 1];
                        }

                        // 結果が X ならば表を出力
                        if (result == X)
                        {
                            Console.WriteLine("Yes");
                            for (int i = 0; i < 4; i++)
                            {
                                Console.WriteLine($"{f[i, 0]} {f[i, 1]} {f[i, 2]} {f[i, 3]}");
                            }
                            return;
                        }
                    }
                }
            }
        }

        // 見つからなかった場合
        Console.WriteLine("No");
    }
}
0