私はかなり長い間この問題に悩まされてきました。コンソールに入力を入力すると問題なく動作するように見えますが、送信すると、ソリューションは常にテスト #3 に失敗します (入力または出力が何であるかを確認できません)。問題はここティムスです。問題は次のとおりです。
この問題はとても簡単なので、著者は説明を書くのが面倒でした!
入力
入力ストリームには、一連の整数 Ai (0 ≤ Ai ≤ 1018) が含まれます。数字は、任意の数のスペースと改行で区切られます。入力ストリームのサイズは 256 KB を超えません。
出力
最後の数値から最初の数値までの各数値 Ai について、その平方根を出力する必要があります。各平方根は、小数点以下 4 桁以上で別の行に出力する必要があります。
入力:
1427 0
876652098643267843
5276538
出力:
2297.0716
936297014.1164
0.0000
37.7757
これは私のコードです:
using System;
using System.Collections.Generic;
using System.IO;
namespace ReverseRoot
{
class Program
{
static void Main(string[] args)
{
List<ulong> longs = new List<ulong>();
string current = "";
bool inNumber = false;
string input = Console.In.ReadToEnd();
for (int i = 0; i < input.Length; ++i)
{
char c = input[i];
if (inNumber && !char.IsDigit(c))
{
longs.Add(ulong.Parse(current));
inNumber = false;
current = "";
}
if (char.IsDigit(c))
{
inNumber = true;
current += c;
}
}
longs.Reverse(0, longs.Count);
foreach (ulong n in longs)
{
double p = (Math.Truncate(Math.Sqrt(n) * 10000.0)) / 10000.0;
Console.WriteLine("{0:F4}", p);
}
Console.ReadLine();
}
}
}
問題の文言が完全に明確ではないため、小数点以下 4 桁に丸めることも試みました。
foreach (ulong n in longs)
{
Console.WriteLine("{0:F4}", Math.Sqrt(n));
}
コンソールの値の範囲で数値を試しましたが、それが何であるかわかりません。