Answers to: modulo of big numbershttps://discuss.codechef.com/questions/2825/modulo-of-big-numbers<p>I want to express the output(t3) as modulo of 15746 can someone please tell me what is the error in this code.(n<1000000)
for full <a href="http://opc.iarcs.org.in/index.php/problems/01TILES">question</a>.</p>
<pre><code>#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,x,t1=0,t2=1,t3=0;
cin>>n;
for(x = 0 ;x < n ; x++)
{
t3=t1+t2;
t1=t2;
t2=t3;
}
t3=t3%15746;
cout << t3;
//system("pause");
return (0);
}
</code></pre>
<p>P.S. I am just a beginner.</p>enThu, 04 Oct 2012 22:03:15 +0530Answer by pragramehttps://discuss.codechef.com/questions/2825/modulo-of-big-numbers/2849<p>You need to put the modulus inside the for-loop. The problem is that after a while, t3 is going to overflow. In order to debug this, just ask yourself: "Is t1 < 15746? Is t2 < 15746? Is t3 <15746? after each iteration?". In your updated code, you have put the modulus <em>after</em> assigning t3 to t2. This means that its still not going to work, because the 'updated t3' is not being used to calculate the next t1/t2.</p>
<p>Instead, you may like to do the following:</p>
<blockquote>
<p>t3 = t1 + t2;</p>
<p>t3 = t3 % 15746;</p>
<p>t1 = t2;</p>
<p>t2 = t3;</p>
</blockquote>
<p>Now you can see that after each iteration, assuming that t1 and t2 are <15746, then in the next iteration also, t1 and t2 will be < 15746.</p>pragrameThu, 04 Oct 2012 22:03:15 +0530https://discuss.codechef.com/questions/2825/modulo-of-big-numbers/2849Answer by betlistahttps://discuss.codechef.com/questions/2825/modulo-of-big-numbers/2830<p>You used correct operand <code>%</code>, but on wrong place, put it in your for loop, otherwise it can overflow.</p>betlistaThu, 04 Oct 2012 14:58:01 +0530https://discuss.codechef.com/questions/2825/modulo-of-big-numbers/2830