Sir, here is the qustion:-

Nestor was doing the work of his math class about three days but he is tired of make operations a lot and he should deliver his task tomorrow. His math’s teacher gives two numbers a and b. The problem consist in find the last digit of the potency of base a and index b. Help Nestor with his problem. You are given two integer numbers: the base a (0 <= a <= 20) and the index b (0 <= b <= 2,147,483,000). You have to find the last digit of a^b.

Input
The first line of input contains an integer t, the number of test cases (t <= 30). t test cases follow. For each test case will appear a and b separated by space.

Output
For each test case output an integer per line representing the result.

Time limit: 1s
Source limit: 700B


Here is my code sir.

#include<stdio.h>
#include<math.h>
int fun(int,int);
int main()
{
int a,mod,nb,t,i;
unsigned long b;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d %lu",&a,&b);
if(a!=0 || b!=0)
{
mod=a%10;
if(mod==2 || mod==3 || mod==7 ||mod==8)
{
nb=b%4;
if(nb==0) nb=4;
if(b==0) nb=0;
fun(mod,nb);           
}
else if(mod==4 ||  mod==9)
{
nb=b%2;
if(nb==0) nb=2;
if(b==0) nb=0;
fun(mod,nb);
}
else if(mod==0 || mod==1 || mod==5 || mod==6) 
{
if(b==0) nb=0;
else nb=1;
fun(mod,nb);     
}
}
}
return 0;
}
int fun(int mod,int nb)
{             
int p,ld;           
p=pow(mod,nb);
ld=p%10;
printf("%d\n",ld);
}

There is some error, due to which I am getting wrong answer. I have debugged the code lot of times and unable to find the reason of getting wrong answer.
Please help me sir.

There is some error, due to which I am getting wrong answer.

1) If "there is some error" then you have a mistake. We are not psychic. What's the error?
2) Format your code. We can't help you if we can't follow the code.

No sir ,there is not some any type of syntax error or runtime error or compilation error..
I have cheaked and matched the answer from calculation, it is running smoothly , but there is some thing wrong due to which I am getting wrong answer which I dont know..
Please help me

Edited 5 Years Ago by cse.avinash: n/a

I have included return 0 in the function fun, its again showing wrong answer

here is improved code:--

#include<stdio.h>
#include<math.h>
int fun(int,int);
int main()
{
int a,mod,nb,t,i;
unsigned long b;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d %lu",&a,&b);
if(a!=0 || b!=0)
{
mod=a%10;
if(mod==2 || mod==3 || mod==7 ||mod==8)
{
nb=b%4;
if(nb==0) nb=4;
if(b==0) nb=0;
fun(mod,nb);           
}
else if(mod==4 ||  mod==9)
{
nb=b%2;
if(nb==0) nb=2;
if(b==0) nb=0;
fun(mod,nb);
}
else if(mod==0 || mod==1 || mod==5 || mod==6) 
{
if(b==0) nb=0;
else nb=1;
fun(mod,nb);     
}
}
}
return 0;
}
int fun(int mod,int nb)
{             
int p,ld;           
p=pow(mod,nb);
ld=p%10;
printf("%d\n",ld);
return 0;
}

I hope u want to find the last digit of an integer.. rite? If so this will give u the last digit of the given number.

int main ()
{
    int p=0;
    ...
    ...

    p = pow(a, b);
    printf ("Last Digit : %d\n", p - 10 * (p / 10));

    return 0;
}

printf ("Last Digit : %d\n", p - 10 * (p / 10));

Why so complex? printf ("Last Digit : %d\n", p % 10);

You are given two integer numbers: the base a (0 <= a <= 20) and the index b (0 <= b <= 2,147,483,000).

...
if(a!=0 || b!=0)
{
...

What will your program do when both a AND b are zero?

This article has been dead for over six months. Start a new discussion instead.