結果
| 問題 |
No.3332 Consecutive Power Sum (Small)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-02 22:22:38 |
| 言語 | C# (.NET 8.0.404) |
| 結果 |
AC
|
| 実行時間 | 827 ms / 2,025 ms |
| コード長 | 1,209 bytes |
| コンパイル時間 | 7,943 ms |
| コンパイル使用メモリ | 169,264 KB |
| 実行使用メモリ | 191,408 KB |
| 最終ジャッジ日時 | 2025-11-02 22:23:16 |
| 合計ジャッジ時間 | 31,454 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 52 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (106 ミリ秒)。 main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
#nullable enable
var n = long.Parse(Console.ReadLine()!);
var ans = new List<(int, long, long)>();
for (var d = 1L; d <= 2000000; d++)
{
var ld2 = n * 2 - d * d - d;
if (ld2 < 0 || ld2 % (d * 2) != 0) continue;
var l = ld2 / (d * 2);
ans.Add((1, l + 1, l + d));
}
long SafePower(long x, int p)
{
var lowerThan = n * 4 + 1;
var res = 1L;
while (p > 0)
{
if ((p & 1) > 0)
{
if (res >= lowerThan / x) return -1;
res *= x;
if (p == 1) return res;
}
if (x >= lowerThan / x) return -1;
x *= x;
p >>= 1;
}
return res;
}
for (var e = 2; e <= 40; e++)
{
var dictionary = new Dictionary<long, long>() { [0] = 0 };
var r = 1L;
var last = 0L;
while (true)
{
var re = SafePower(r, e);
if (re < 0) break;
last += re;
if (dictionary.TryGetValue(last - n, out var l)) ans.Add((e, l + 1, r));
dictionary[last] = r;
r++;
}
}
ans = ans.Distinct().ToList();
ans.Sort();
Console.WriteLine(ans.Count);
if (ans.Count > 0) Console.WriteLine(string.Join(Environment.NewLine, ans.Select(e => e.Item1 + " " + e.Item2 + " " + e.Item3)));