Chef and Walk (RECode 12.0 )

Even after making the correct logic , many people got WA …this is due to modular arithmetic

Some Properties -

  • (a + b ) % m = (a % m + b % m ) %m

  • (a - b ) % m = ( (a % m - b % m ) + m ) %m

  • (a * b ) % m = (a % m * b % m ) %m

  • (a / b ) % m = (a % m * inv(b) ) %m where inv(b) = pow(b,m-2,m)

    t = int(input())
    mod = 1000000007
    for _ in range(t):
    n,k = map(int,input().split(' '))
    if(n==0):
      print((k*(k-1))%mod)
    else:
      a = n + k//2
      ans = pow(a,2,mod)  # pow(base,expo,mod) in this (a*a)%p
      if(k%2==0):
          ans = (ans - k//2 + mod ) % mod    #(a-b)%mod = ((a%mod - b%mod)%mod + mod)%mod
      else:
          ans = (ans + k//2 ) %mod          #(a+b)%mod = (a%mod + b%mod)%mod
      print(ans)
1 Like

here is my cpp solution : CodeChef: Practical coding for everyone
Read from line 447