Java:由于超时,N系列求和失败

Java:由于超时,N系列求和失败,java,biginteger,Java,Biginteger,在hackerrank的网站上,有一项任务叫做“数学部分下的N系列求和”。这里是相同的链接 我试过很多东西。最后,我的一些测试用例通过了测试,其中一些不是由于超时异常引起的 这是完整的代码。请让我知道什么是解决方案 public class Solution { static int mod = 1000000007; static int summingSeries(long t) { long sum = 0; for (int i =

在hackerrank的网站上,有一项任务叫做“数学部分下的N系列求和”。这里是相同的链接

我试过很多东西。最后,我的一些测试用例通过了测试,其中一些不是由于超时异常引起的

这是完整的代码。请让我知道什么是解决方案

public class Solution {

    static int mod = 1000000007;

    static int summingSeries(long t) { 
        long sum = 0;
        for (int i = 0; i < t; i++) {
            sum = ((t%mod)*(t%mod))%mod;
        }
        return (int)sum;
    }

    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        int t = Integer.parseInt(scanner.nextLine().trim());

        for (int tItr = 0; tItr < t; tItr++) {
            long n = Long.parseLong(scanner.nextLine().trim());

            int result = summingSeries(n);

            bufferedWriter.write(String.valueOf(result));
            bufferedWriter.newLine();
        }

        bufferedWriter.close();
    }
} 

终于解决了。看一看

public class Solution {
    static int mod = 1000000007;
    static int summingSeries(long n) { 
        return (int)(((n % mod) * (n % mod)) % mod);
    }

    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) throws IOException {
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

        int t = Integer.parseInt(scanner.nextLine().trim());

        for (int tItr = 0; tItr < t; tItr++) {
            long n = Long.parseLong(scanner.nextLine().trim());

            int result = summingSeries(n);

            bufferedWriter.write(String.valueOf(result));
            bufferedWriter.newLine();
        }

        bufferedWriter.close();
    }
} 

您失败的测试用例是什么?这是几个示例5351871996120528248813659738258。。。这是在测试用例3,4,5,6中。很多Hachernak测试不仅仅是关于编写算法,而是关于思考算法及其问题。你的测试失败了,因为你强迫它,试着在算术和、模和给定值10^7+7后面找到更多关于数学的信息。你能告诉我们出了什么问题吗?如果我猜的话,你是在用一个int来计算一个非常大的数。也就是说,n.intValue调用。请注意,输入n可以等于10^16,而int max值仅在10^9和10^10之间。另外,有一种更好的方法可以解决系列问题,而无需迭代整个系列。我不确定分享这个解决方案是否合乎道德,因为你的问题的本质似乎来自一个竞争性的网站