結果
| 問題 |
No.3360 平方根の整数倍の整数部分
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-11-14 23:12:55 |
| 言語 | C# (.NET 8.0.404) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,224 bytes |
| コンパイル時間 | 8,198 ms |
| コンパイル使用メモリ | 170,004 KB |
| 実行使用メモリ | 188,692 KB |
| 最終ジャッジ日時 | 2025-11-14 23:13:07 |
| 合計ジャッジ時間 | 11,731 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 35 WA * 3 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (112 ミリ秒)。 main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
using System;
using static System.Console;
using System.Linq;
using System.Collections.Generic;
using System.Globalization;
class Program
{
static int NN => int.Parse(ReadLine());
static long[] NList => ReadLine().Split().Select(long.Parse).ToArray();
public static void Main()
{
Solve();
}
static void Solve()
{
var c = NList;
var (n, m) = (c[0], c[1]);
var ng = ((decimal)Math.Sqrt(n) + 1000) * 100_000_000;
var n2 = (decimal)n;
for (var i = 0; i < 16; ++i) n2 *= 10;
var ok = decimal.Zero;
while (ng - ok > 1)
{
var mid = decimal.Floor((ng + ok) / 2);
if (mid * mid <= n2) ok = mid;
else ng = mid;
}
var rn = ok;
ok = decimal.Ceiling((decimal)m * 5 / 2);
ng = 0;
while (ok - ng > 1)
{
var mid = decimal.Floor((ng + ok) / 2);
if (mid * rn - mid * 100_000_000 >= m * 100_000_000) ok = mid;
else ng = mid;
}
WriteLine(decimal.Floor(ok * rn / 100_000_000) - decimal.Floor((ok * rn - ok * 100_000_000 - m * 100_000_000) / 100_000_000) - 1);
}
}