online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
#include<bits/stdc++.h> #define MOD 1000000007 using namespace std; typedef long long ll; vector<vector<ll>> multiply(vector<vector<ll>> A, vector<vector<ll>> B){ vector<vector<ll>> C(2+1,vector<ll>(2+1)); for(ll i = 0; i <= 2; i++){ for(ll j = 0; j <= 2; j++){ for(ll x = 0; x <= 2; x++){ C[i][j] = (C[i][j] + (A[i][x]*B[x][j])%MOD)%MOD; } } } return C; } vector<vector<ll>> pow(vector<vector<ll>> T, ll n){ if(n == 1) return T; if(n&1){ return multiply(T,pow(T,n-1)); } vector<vector<ll>> X = pow(T,n/2); return multiply(X,X); } ll compute(ll n){ if(n == 0) return 0; if(n == 1 || n == 2) return 1; /* sum = F[0] + F[1] */ ll sum = 1ll; vector<ll> F1(2+1); F1[0] = sum; F1[1] = 0; F1[2] = 1; vector<vector<ll>> T(2+1,vector<ll>(2+1)); T[0][0] = 1; T[0][1] = 1; T[0][2] = 1; T[1][0] = 0; T[1][1] = 0; T[1][2] = 1; T[2][0] = 0; T[2][1] = 1; T[2][2] = 1; T = pow(T,n-2); sum = 0; for(ll i = 0; i <= 2; i++){ sum = (sum + (T[0][i]*F1[i])%MOD)%MOD; } return sum; } int main(){ int t; cin >> t; while(t--){ ll n,m; cin >> m >> n; ll result = (compute(n)%MOD-compute(m-1)%MOD+MOD)%MOD; cout << result << endl; } return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue