愚蠢的平方根谜题

本文关键字:平方根 | 更新日期: 2023-09-27 18:18:01

我已经被这个问题困扰了很长一段时间,当我在控制台输入输入时,它似乎工作得很好,但是当提交我的解决方案时,测试#3总是失败(您无法看到输入或输出是什么)。问题在这里,Timus。问题在这里:

这个问题是如此简单,以至于作者懒得为它写一个声明!

输入

输入流包含一组整数Ai(0≤Ai≤1018)。这些数字由任意数量的空格和换行符分隔。输入流的大小不能超过256kb。

对于从最后一个到第一个的每个数字Ai,你应该输出它的平方根。每个平方根应单独打印一行,小数点后至少有四位数字。

输入:

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));
        }

我在控制台的数值范围内尝试过数字,不确定它可能是什么

愚蠢的平方根谜题

这给出了站点....上的输出(你的截断值没有,所以需要四舍五入)

private static void Main(string[] args)
{            
   Console.In.ReadToEnd().Split(new[] { ' ', ''r', ''n' }, StringSplitOptions.RemoveEmptyEntries)
        .Select(ulong.Parse)
        .Reverse()
        .Select(n => Math.Sqrt(n).ToString("F4"))
        .ToList()
        .ForEach(Console.WriteLine);
}