結果
問題 |
No.1538 引きこもりさんは引き算が得意。
|
ユーザー |
![]() |
提出日時 | 2021-06-17 18:23:21 |
言語 | PHP (843.2) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,839 bytes |
コンパイル時間 | 387 ms |
コンパイル使用メモリ | 34,056 KB |
実行使用メモリ | 35,104 KB |
最終ジャッジ日時 | 2025-01-03 05:36:11 |
合計ジャッジ時間 | 4,758 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 WA * 1 |
other | AC * 29 WA * 25 |
コンパイルメッセージ
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) { global $n, $k; if (count($elements) <= 1) { yield $elements; } else { foreach (permutations(array_slice($elements, 1)) as $permutation) { foreach (range(0, count($elements) - 1) as $i) { $p = array_merge( array_slice($permutation, 0, $i), [$elements[0]], array_slice($permutation, $i) ); if (count($p) < $n) { yield $p; } else { $r = []; foreach($p 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)) { return true; } $r = array_unique($t); } } } } } } } $ret = permutations($list); echo $ret?"Yes":"No";