 < Back to forum

### area51

#include<stdio.h>
main()
{
int t,n,x,i,j=1,s;
scanf("%d",&t);
while(t--){
scanf("%d %d",&n,&x);
for(i=1;i<=n;i++){
s=i%x;
j=j*s;
}
printf("%d\n",j%x);
j=1;
}
}

Asked by: Deepak_Shaw_Shaw on April 7, 2019, 6:34 p.m. Last updated on April 7, 2019, 6:34 p.m.

Preview

##### Enter your comment details below:

Preview

First thing you need to do is , instead of takind mod of final value of  j , you need to mod of value of j each time it is calculated in your for loop.

``````for(i=1;i<=n;i++)
{
s=i%x;
j=(j*s)%x;
}``````

Since max value of n can be 10^9, so to optimise your code ,you should come out of your for loop as soon as j = 0 using break statement.

``````for(i=1;i<=n;i++)
{
s=i%x;
j=(j*s)%x;
if(j==0)
break;
}``````

In this question you need to calculate charity .

Charity is zero when j = 0   and  when j != 0 Charity is equal to x - j .

Raghav_Grover last updated on April 7, 2019, 6:34 p.m.

##### Instruction to write good question
1. 1. Write a title that summarizes the specific problem
2. 2. Pretend you're talking to a busy colleague
3. 3. Spelling, grammar and punctuation are important!