結果

問題 No.3332 Consecutive Power Sum (Small)
コンテスト
ユーザー tobisatis
提出日時 2025-11-02 22:19:56
言語 C#
(.NET 8.0.404)
結果
WA  
実行時間 -
コード長 1,204 bytes
コンパイル時間 8,233 ms
コンパイル使用メモリ 170,624 KB
実行使用メモリ 190,984 KB
最終ジャッジ日時 2025-11-02 22:20:17
合計ジャッジ時間 21,162 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 17 WA * 35
権限があれば一括ダウンロードができます
コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.csproj を復元しました (114 ミリ秒)。
  main -> /home/judge/data/code/bin/Release/net8.0/main.dll
  main -> /home/judge/data/code/bin/Release/net8.0/publish/

ソースコード

diff #

#nullable enable

var n = long.Parse(Console.ReadLine()!);
var ans = new List<(int, long, long)>();
for (var d = 1L; d <= 200000; 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 + 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)));
0