• + 0 comments

    Here's my solution:

    #include <bits/stdc++.h>
    using namespace std;
    
    string ltrim(const string &);
    string rtrim(const string &);
    
    /*
     * Complete the 'summingSeries' function below.
     *
     * The function is expected to return an INTEGER.
     * The function accepts LONG_INTEGER n as parameter.
     */
    
    
    /*
    T_n=n^2-(n-1)^2
    
    a^2+b^2=(a+b)(a-b)
    
    T_n = (n+n-1)(n-(n-1))=(2n-1)(1)=2n-1
    
    S_n = T_1+T_2+...+T_n
    S_n = sum_{k=1}^{n} (2k-1)
    S_n = 2sum_{k=1}^{n} k - sum_{k=1}^{n} 1
    S_n = 2* (n*n-1)/2 -n = n(n+1)-n = n^2
    ==> S_n = n^2
    S_n mod (10^9+7) = n^2 mod 1000000007
    */
    
    int summingSeries(long n) {
        // return (1LL*n*n)%1000000007; // Fail 2 testcases
        const int MOD = 1000000007;
        n%=MOD;
        return (n*n)%MOD;
    }
    
    int main()
    {
        ofstream fout(getenv("OUTPUT_PATH"));
    
        string t_temp;
        getline(cin, t_temp);
    
        int t = stoi(ltrim(rtrim(t_temp)));
    
        for (int t_itr = 0; t_itr < t; t_itr++) {
            string n_temp;
            getline(cin, n_temp);
    
            long n = stol(ltrim(rtrim(n_temp)));
    
            int result = summingSeries(n);
    
            fout << result << "\n";
        }
    
        fout.close();
    
        return 0;
    }
    
    string ltrim(const string &str) {
        string s(str);
    
        s.erase(
            s.begin(),
            find_if(s.begin(), s.end(), not1(ptr_fun<int, int>(isspace)))
        );
    
        return s;
    }
    
    string rtrim(const string &str) {
        string s(str);
    
        s.erase(
            find_if(s.rbegin(), s.rend(), not1(ptr_fun<int, int>(isspace))).base(),
            s.end()
        );
    
        return s;
    }