我已经提出了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;
}
答案 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;
您可能需要重新安排方程式的评估,以减少溢出问题(这可能是挑战的核心概念)。