結果
問題 |
No.1538 引きこもりさんは引き算が得意。
|
ユーザー |
![]() |
提出日時 | 2021-06-17 18:12:03 |
言語 | PHP (843.2) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,576 bytes |
コンパイル時間 | 3,481 ms |
コンパイル使用メモリ | 36,244 KB |
実行使用メモリ | 211,204 KB |
最終ジャッジ日時 | 2025-01-03 04:18:05 |
合計ジャッジ時間 | 49,775 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 WA * 16 TLE * 15 |
コンパイルメッセージ
No syntax errors detected in Main.php
ソースコード
<?php // 黒板に N 個の整数 が書かれています.引き算が得意なゅゅちゃんは 0 以上 N-1 以下の任意の回数,以下の操作を繰り返すことができます. // 黒板に書かれている数を 2 つ選んで消す.消した数を として, と x-y, y-x のどちらか一方を黒板に書く. // この操作によって,黒板に書かれている数に K が含まれている状態にすることができるか判定してください. list($n, $k) = explode(" ", trim(fgets(STDIN))); $list = explode(" ", trim(fgets(STDIN))); if (in_array($k, $list)) echo 'Yes'; // 順列 function permutations(array $elements) { if (count($elements) <= 1) { yield $elements; } else { foreach (permutations(array_slice($elements, 1)) as $permutation) { foreach (range(0, count($elements) - 1) as $i) { yield array_merge( array_slice($permutation, 0, $i), [$elements[0]], array_slice($permutation, $i) ); } } } } foreach (permutations($list) as $permutation) { $r = []; foreach($permutation as $v) { if (empty($r)) { $r = [$v, -$v]; } else { $t = []; foreach($r as $rr) { $t[] = $rr + $v; $t[] = $rr - $v; } if (in_array($k, $r)) { echo "Yes"; exit; } $r = array_unique($t); } } } echo "No";