Anyone explain Why I am getting WA from 2 Test case. in DBFB OF MAY Long challenge.
I even checked for integer overflow in highest test case possible. in taking n,m=10e5,a[i]=10e9…I got 603392858. and from one correct solution also 603392858.
Try adding %mod here
F[0][0] = x%mod;
… for all four…
F[0][1] = y;
F[1][0] = z;
F[1][1] = w;
and even then problem still exist then and only then try checking this line for overflow…
cuz its too messy for me to understand… avoid multiplying three integers…
multiply like this ((a*b)%mod)*c)%mod…
res=(res + (((F[0][0]%mod)(sumb%mod))%mod + (((m%mod)((F[0][1]%mod)*(a[i]%mod)%mod)%mod)%mod)%mod)%mod)%mod;
I have done by your way still getting WA from another case.
new soltuon
And resubmitting exactly same soltion again i got error in other case.
Repeated solution.
Confusion!!
I am still getting errors… according to modulus multiplication…
(ab)%mod=((a%mod)(b%mod))%mod. I also used the same
here is your passed solution :
https://www.codechef.com/viewsolution/18600970
problem was in modulos and brackets of matrix multiplication function and problem was in size of array B…
i would suggest you to not use too much modulos where they are not necessary and make your code unreadable and hard to debug…
see u wrote F[0][0]%mod and u already stored modulo value in F[0][0]… i mean F[0][0] was already < mod… then you should avoid that… it may give you tle in some questions… I have experienced that some ques give tle if u have lot of extra modulos…
@avik26091998 Yes… add modulo here
for(int i = 4; i <= 100001; ++i) pre_fib[i] = ((pre_fib[i - 1] + pre_fib[i - 2]));
as
for(int i = 4; i <= 100001; ++i) pre_fib[i] = ((pre_fib[i - 1] + pre_fib[i - 2])%MOD);
Dammm I missed it because of modulus…Thank you very much for help
welcome
I am also getting wrong answer for my solution.
if anyone could tell me. Link : https://www.codechef.com/viewsolution/18586999