我一直在这个问题上停留了相当一段时间,它似乎工作正常,当我在控制台输入输入,但是当提交我的解决方案总是失败测试#3(你看不到什么输入或输出是)。问题在这里Timus。这是问题:愚蠢的平方根难题
问题很简单,作者懒得为它写一个声明!
输入
输入流包含一组整数艾(0≤艾≤1018)的。数字由任意数量的空格和换行符分隔。输入流的大小不超过256 KB。
输出
对于每个编号艾从最后一个,直到你应该输出的平方根的第一个。每个平方根应该在一个单独的行中打印,小数点后至少有四位数字。
输入:
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();
}
}
}
我还尝试四舍五入到由于四个小数位措辞的问题是不完全清楚:
foreach (ulong n in longs)
{
Console.WriteLine("{0:F4}", Math.Sqrt(n));
}
我已经通过值在控制台的范围内试图数字,不知道它可能是什么。
您应简要描述你的代码是试图解决,使人们的问题不需要访问该网站以了解您的问题。简单输入和预期输出的例子也有帮助。 – hatchet
我认为你的代码在最后一个长整型值之后没有空格或换行符时失败。你的代码不会解析最后一个值,因为你的逻辑需要'!char.IsDigit(c)'来触发获取值。 – hatchet
好抓斧头,这是真的! –