help in understanding exactly where to apply modulo operator

Revision en1, by rprudhvi590, 2019-12-07 14:01:57
  • Given an integer n, find and return the n'th magic number
  • A magic number is defined as a number which can be expressed as a power of 7 or sum of unique powers of 7
  • First four magic numbers are  7 ,  49 ,  56 (7 + 49),  343,etc . constraint 1<=n<=pow(10,18) i have implemented the solution as follows: #include<bits/stdc++.h> #define ll unsigned long long int ll mod=1000000007; using namespace std; int main(){ ll n; cin>>n; ll count=1,sum=0; while(n>0){ ll temp=n%2; ll add=(pow(7,count)*temp); sum=(sum%mod+add%mod)%mod; n/=2; count++; } cout<<sum; } but it gives me wrong answer,the only difference is that when calculating the value of add we need to apply mod;and the solution is as follows:

#include<bits/stdc++.h> #define ll unsigned long long int ll mod=1000000007; using namespace std; int main(){ ll n,p=1; cin>>n; ll count=1,sum=0; while(n>0){ ll temp=n%2; p=(p*7)%mod; if(temp==1) sum=(sum%mod+p%mod)%mod; n/=2; } cout<<sum; } how will we know where to apply a mod operator..pls help.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en3 English rprudhvi590 2019-12-07 14:33:05 162
en2 English rprudhvi590 2019-12-07 14:15:35 723
en1 English rprudhvi590 2019-12-07 14:01:57 1290 Initial revision (published)