2016-06-05 5 views
-2

Ich habe einen Code für die "Summierung der N-Serie" Herausforderung von hackerrank.com. Hier ist ein Link zu dem Problem: https://www.hackerrank.com/challenges/summing-the-n-series.Lösen von hackerrank "Summierung der N-Serie" Herausforderung

Allerdings scheint meine "Lösung" nicht für große Zahlen zu funktionieren, und ich habe keine Ahnung warum.

#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

wie große zahlen? – gba

+0

5773408242017850 ist einer der Testfälle, die ich versage. – KhatnaBold

+0

Ich glaube nicht, dass "stdafx.h" auf hackerrank verfügbar sein wird. – MikeCAT

Antwort

0

Sie haben einen Teil der Gleichung vergessen.

Von der Herausforderung Aussage:

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

Sie vermissen die zweite Hälfte der Gleichung.

Sie könnten versuchen:

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

Sie müssen möglicherweise die Auswertung der Gleichung neu zu ordnen Überlaufprobleme zu reduzieren (die das Kernkonzept der Herausforderung sein könnte).