結果
| 問題 |
No.3245 Payment with 8-rep Currency
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-08-22 23:05:59 |
| 言語 | C# (.NET 8.0.404) |
| 結果 |
AC
|
| 実行時間 | 195 ms / 2,000 ms |
| コード長 | 1,527 bytes |
| コンパイル時間 | 8,881 ms |
| コンパイル使用メモリ | 170,772 KB |
| 実行使用メモリ | 216,964 KB |
| 最終ジャッジ日時 | 2025-08-22 23:06:19 |
| 合計ジャッジ時間 | 18,771 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 30 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (109 ミリ秒)。 main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
#nullable enable
#region
var _input = Array.Empty<string>();
var _iter = 0;
string String()
{
while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0);
return _input[_iter++];
}
T I<T>() where T : IParsable<T> => T.Parse(String(), null);
#endregion
long[] Solve(long n)
{
var impossible = new[]{ -1L };
if (n % 8 != 0) return impossible;
n /= 8;
if (n >= 3000)
{
var u = n / 123;
var l = n % 123;
var l3 = l / 111;
l -= l3 * 111;
var l2 = l / 11;
l -= l2 * 11;
var l1 = u + l;
l2 += u;
l3 += u;
if (l1 + l2 * 11 + l3 * 111 != n) return impossible;
var mi = Math.Max(Math.Max(l1, l2), l3);
if (mi * 2 >= l1 + l2 + l3) throw new Exception();
return new[]{ l1, l2, l3, 0 };
}
for (var i4 = 0; i4 * 1111 <= n; i4++)
{
var l4 = n - i4 * 1111;
for (var i3 = 0; i3 * 111 <= l4; i3++)
{
var l3 = n - i3 * 111;
for (var i2 = 0; i2 * 11 <= l3; i2++)
{
var i1 = l3 - i2 * 11;
var s = i1 + i2 + i3;
var mi = Math.Max(Math.Max(i1, i2), Math.Max(i3, i4));
if (mi * 2 < s) return new long[]{ i1, i2, i3, i4 };
}
}
}
return impossible;
}
var tc = I<int>();
var ans = new string[tc];
for (var i = 0; i < tc; i++) ans[i] = string.Join(' ', Solve(I<long>()));
Console.WriteLine(string.Join(Environment.NewLine, ans));