- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想学习 C#,所以我开始使用 hackerearth 并从他们的网站上解决问题,但我遇到了某种问题。所以我有以下代码
using System;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
long N, i, answer = 1;
do
{
N = Convert.ToInt32(Console.ReadLine());
} while (N < 1 && N > 1000);
long[] A = new long[N];
for (i = 0; i < N; i++)
{
do
{
A[i] = Convert.ToInt32(Console.ReadLine());
} while (A[i] < 1 && A[i] > 1000);
}
for(i = 0; i < N; i++)
{
answer = (answer * A[i]) % (1000000007);
}
Console.WriteLine(answer);
}
}
}
当我编译它时,我得到了正确的答案,一切都很好,但是当我将它提交给 hackerearth 编译器时,它给了我 NZEC 错误。自从我几天前刚开始使用 C# 以来,我认为我遗漏了一些东西,所以我又写了一次,但是是用 C++ 写的,它给了我网站上的最高分。我知道我的变量声明中可能存在一些问题,因为我不完全理解如何读取数字,我希望你能帮助我解决这个问题。谢谢!
最佳答案
假设您卡在 Find Product problem 上,正如您所怀疑的那样,数据的输入是一行 N,然后一行是您需要相乘的所有 N 个数字,以空格分隔。您可以使用 LINQ 快速解析数字行(我建议您尽快进入 LINQ - 这将使您远离 C++ 命令式思维)。
怎么样:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Diagnostics;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
var N = Convert.ToInt32(Console.ReadLine()); // Less than 2^31 integers to be read
var A = Console.ReadLine() // Read the line of space delimited numbers
.Split(' ') // Split out by the separator
.Select(n => Convert.ToInt64(n)) // Parse each number to long
.ToArray(); // Convert to a materialized array
Debug.Assert(A.Length == N, "Site lied to us about N numbers");
long answer = 1; // or var answer = 1L;
for(var i = 0; i < N; i++)
{
answer = (answer * A[i]) % (1000000007);
}
Console.WriteLine(answer);
}
}
}
一些注意事项:
do..while
没有效果 - 它们总是会在一次通过后退出 - 这是因为一个值不能同时为 < 1 和 > 1000Convert.ToInt32
解析 32 位 int。您已经定义了一个 long(与 C++ 不同,在 C# 中始终是 64 位),所以这应该是 Convert.ToInt64
A[i]
限制在 10 ^ 3 以下,因此 A[]
可以是 int[],尽管乘积可能更大,所以 long
甚至 System.Numerics.BigInteger
都可以用于产品。既然你说你想学习 C#(而不仅仅是将 C 代码转换为 C#),你还可以 LINQify 最终的 for 循环,它使用 .Aggregate 从数组中计算答案。 .聚合支持种子重载(即 left fold
,因为它允许返回类型不同)和非种子重载(即 reduce
,其中返回类型必须是与输入可枚举相同)。在你的情况下,你实际上不需要用 1L
播种答案,因为它可以用 A[0]
播种,下一个乘法将用 A[1]
因为任何数字乘以 1 都将是数字。
var answer = A.Aggregate((subtotal, next) => (subtotal * next) % (1000000007));
关于C# 在 HackerEarth 上获取 NZEC 错误解析输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48773845/
我解决了following来自 HackerEarth 的问题。除最后一个测试用异常(exception),所有测试用例都是正确的,因为它超时了。我尝试优化我的解决方案,但无法更好地优化它。这是我的解
问题链接::http://www.hackerearth.com/the-big-bang-challenge/algorithm/subset-and-4/ 问题是给你一个数字 Z 和一些 n 整数
这是我的第一个问题。所以我遇到了this来自 HackerEarth 的问题,我使用 HashMap 解决了它。 我认为我的解决方案是正确的,因为在所有 5 个输入中,3 个是正确的,但其余两个超出了
我一直在尝试做这个 HackerEarth 问题,但最后几个测试用例似乎总是超时 问题陈述: https://www.hackerearth.com/practice/algorithms/searc
我最近遇到了这个编码挑战 - The Unlucky number 13 . (本节最后一个问题) 问题陈述: 编写一个程序来计算由 组成的字符串总数电话 人物。 任何字符串都不能将“ 13 ”作为子
我正在尝试查找任何给定字符串中固定单词的出现次数。 固定字词 = 'hackerearth' 随机字符串可能是 s = 'aahkcreeatrhaaahkcreeatrha' 现在我们可以从字符串生
当我在 hackerearth 提交此代码时,我得到了 TLE。 任何建议我如何优化这个代码。 #include #include int checkPrime(int); int main()
这是一道 HackerEarth 编程挑战题。这是 link 问题来了 A large network of criminals is working under JOKER to destroy a
我知道这是一个无效的内存引用错误,但我似乎无法在我的代码中找到错误的原因。 我刚刚在 Hackerearth 上尝试了我的问题,它是“查找产品”https://www.hackerearth.com/
我被这个问题困扰了。我的代码通过了示例中给出的所有测试用例,但代码中存在一些错误。错误之处请指出。 问题陈述 ( https://www.hackerearth.com/problem/algorit
Generate as many distinct primes P such that reverse (P) is also prime and is not equal to P. Output
我在 hackerearth.com 上尝试问题,在一个程序中,出现了 NullPointerException ,但是当我在计算机中运行该代码时,它运行良好。我已经阅读了很多有关空指针异常的内容,但
我想学习 C#,所以我开始使用 hackerearth 并从他们的网站上解决问题,但我遇到了某种问题。所以我有以下代码 using System; namespace ConsoleApp6 {
给定一个大小为 N 的数组 A,其中包含正整数。您需要查找并打印此数组 Modulo 中所有数字的乘积。 问题链接 - https://www.hackerearth.com/practice/bas
我是竞争性编程的新手。我知道的唯一语言是 Javascript,但如果我选择 javascript 选项,我什至无法理解如何获取输入以及如何在两个站点中打印输出以解决某些问题是 Hackerrank,
You want to buy a laptop. Each laptop has two parameters: Rating & Price. Your task is to buy a lapt
我是一名优秀的程序员,十分优秀!