結果
問題 |
No.10 +か×か
|
ユーザー |
|
提出日時 | 2025-05-12 17:59:51 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 151 ms / 5,000 ms |
コード長 | 696 bytes |
コンパイル時間 | 2,197 ms |
コンパイル使用メモリ | 166,876 KB |
実行使用メモリ | 8,880 KB |
最終ジャッジ日時 | 2025-05-12 17:59:55 |
合計ジャッジ時間 | 3,368 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 12 |
ソースコード
module main; // https://kmjp.hatenablog.jp/entry/2014/11/02/1000 より import std; import core.stdc.stdlib; void main() { // 入力 int N = readln.chomp.to!int; int total = readln.chomp.to!int; auto A = readln.split.to!(int[]); // 答えの計算(深さ優先探索) char[] ops; auto dp = new bool[][](N, 100_000); // 探索済みの数値 void dfs(int cur, int v) { if (v > total) return; if (cur == N) { if (v == total) { writeln(ops); exit(0); } return; } if (dp[cur][v]) return; dp[cur][v] = true; ops ~= '+'; dfs(cur + 1, v + A[cur]); ops.popBack; ops ~= '*'; dfs(cur + 1, v * A[cur]); ops.popBack; } // 答えの出力 dfs(1, A[0]); }