解决hackerrank“总结N系列”的挑战

时间:2016-06-05 11:51:49

标签: c++ math

我已经提出了hackerrank.com的“总结N系列”挑战的代码。以下是问题的链接:https://www.hackerrank.com/challenges/summing-the-n-series

然而,我的“解决方案”似乎不适用于大数字,我不知道为什么。

#include <iomanip>
#include <cmath>
#include <iostream>

using namespace std;

int main(){
    cout << fixed;
    int t;
    double input, sum, temp=pow(10,9) + 7, result;

    cin >> t;

    for (int o = 0; o < t; o++) {
        cin >> input;
        sum = input*input;
        result = fmod(sum, temp);
        cout << setprecision(0) << result << endl;
    }
    return 0;
}   

1 个答案:

答案 0 :(得分:0)

你忘记了方程式的一部分。

来自挑战声明:

temp = (input * input) - ((input - 1) * (input - 1);

你错过了等式的后半部分。

你可以尝试:

   const long long pretemp = input - 1;
   const long long temp = (input * input) - (pretemp * pretemp);
   sum += temp;

您可能需要重新安排方程式的评估,以减少溢出问题(这可能是挑战的核心概念)。