結果
| 問題 |
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]);
}