## 10515 - Powers Et Al.

Moderator: Board moderators

sohel_cuet_cse
New poster
Posts: 3
Joined: Sun Dec 11, 2005 7:46 pm
Location: chittagong
Contact:
Hi bayzid i think osan have given a solution 2 ur problem solving technique. About input taking i will sugest u 2 take input as string.
Then by using strlen(),determine the length.then work with last 2 digits. Dont worry it will not cause u TLE or WA.Good Luck .
chunyi81
A great helper
Posts: 293
Joined: Sat Jun 21, 2003 4:19 am
Location: Singapore
jjtse, try this input:

Code: Select all

``````0 100
``````
Correct output is

Code: Select all

``````0
``````

Code: Select all

``````1
``````
Kallol
Learning poster
Posts: 100
Joined: Sun Nov 13, 2005 8:56 am
Well,
I do not agree that , considering the last two digits of n is enough for this problem and this is why most of the WAs are happenning. I have read most of the posts of the people who are considering the last two digits and gtting WA and complaining here in this forum.

Just check out the following input:

2 100

now if u only consider the last two digits of n , u will get 0
0%4==0
and 2^0 = 1

so, u have the answer 1 , but any power of two can never be an odd number. here the answer should be , 6.

I think checking this will help people a lot

P.S. checking the last digit for m is enough , though.
Syed Ishtiaque Ahmed Kallol
CSE,BUET
vinit_iiita
New poster
Posts: 30
Joined: Mon Jun 19, 2006 10:37 pm
Contact:

Code: Select all

``````#include<iostream>
#include<vector>
using namespace std;
int main()
{
int m,n;
while (cin>>m>>n)
{
if(!(m==0 && n==0))
{
if (n>0)
{int a;
while (m>=10)
m=m%10;
int t=m;

for (int i=1;i<n;i++)
{
t=t*m;

t=t%10;

}
cout<<t<<endl;
}
else
cout<<"1"<<endl;
}
else
exit(0);
}

return 0;
}

``````
i am getting tle although this is farely faster code...
plz help me...
win
Kallol
Learning poster
Posts: 100
Joined: Sun Nov 13, 2005 8:56 am
No reason NOT to get TLE ...LOL

why r using a loop for N . Nac can be very large . U jut need to know the last few digits of N.Have u seen the limit of m and n? How did u use integer for taking the inputs for m and n?? Use string for taking input of M and N . Another thin is , why are u writing

while(M>=10)
m%=10;

will this loop execute more than once for any value of m ??

whatever that certainly didnt cause u TLE. Take input as string and consider the last signifant digits of n. That will do the trick. Thanx.
Syed Ishtiaque Ahmed Kallol
CSE,BUET
milacao
New poster
Posts: 5
Joined: Mon Aug 14, 2006 7:57 pm

Hi all,
I'm getting WA, although my code solves correctly the problem for the input cases you describe. Here it is:

Code: Select all

``Code removed after AC``
Could someone give me some test case where it is wrong, or why?
Thanks!
Last edited by milacao on Sun Aug 27, 2006 11:38 pm, edited 1 time in total.
Martin Macko
A great helper
Posts: 481
Joined: Sun Jun 19, 2005 1:18 am
Location: European Union (Slovak Republic)

milacao wrote:Hi all,
I'm getting WA, although my code solves correctly the problem for the input cases you describe. Here it is:
Not working for:

Code: Select all

``````24068 79330
0 0``````

Code: Select all

``4``
milacao
New poster
Posts: 5
Joined: Mon Aug 14, 2006 7:57 pm

### Got Accepted!

Thanks Martin,
Now I got AC. The problem was one of the numbers in the row correspondent to cypher 8, where I had a typo.
Regards.
algoJo
New poster
Posts: 37
Joined: Sun Dec 17, 2006 9:02 am
I got Runtime Error , can someone show me why?

Code: Select all

``````AC-ed
``````
Last edited by algoJo on Fri Jun 01, 2007 2:22 am, edited 2 times in total.
Jan
Guru
Posts: 1334
Joined: Wed Jun 22, 2005 10:58 pm
Contact:
I don't know why you are getting RTE. But your is not fully correct. For cases like 100 0, output should be 1.
Ami ekhono shopno dekhi...
HomePage
tmnq
New poster
Posts: 5
Joined: Sun Oct 14, 2007 12:24 pm

### 10515 - TLE How could this be??! ;-(

Code: Select all

``````import java.util.*;
public class Main
{
static boolean isZero(String s)
{
for (int i=s.length()-1; i>=0; i--)
{
if (s.charAt(i)!=48) return false;
}
//if (Integer.parseInt(s)!=0)	return false;
//if (s.length()==1 && s.charAt(0)==48) return true;
return false;
}
public static void main(String args[])
{
int [][] a= {
{1},{},{6,2,4,8},{1,3,9,7},{6,4},{},{},{1,7,9,3},{6,8,4,2},{1,9}
};
int mod4[]= new int[100];
int mod2[]= new int[10];
for (int i=0; i<10; i++) mod2[i]= i%2;
for (int i=0; i<100; i++) mod4[i]= i%4;
Scanner scn= new Scanner(System.in);
while (true)
{
String s1= scn.next();
String s2= scn.next();
//System.out.printf("%s", s1.substring(s1.length()-1));
int c= s1.charAt(s1.length()-1)-48;
int end_1= s2.charAt(s2.length()-1)-48;
if (c==0 && end_1==0)
{
if (isZero(s1) && isZero(s2)) break;
}
switch (c)
{
case 0: case 1: case 5: case 6:
System.out.printf("%d\n", c);
break;
case 2: case 3: case 7: case 8:
int end_2;
if (s2.length()>=2) end_2= (s2.charAt(s2.length()-2)-48)*10+end_1;
else end_2= end_1;
System.out.printf("%d\n", a[c][mod4[end_2]]);
break;
case 4: case 9:
System.out.printf("%d\n", a[c][mod2[end_1]]);
break;
}
}
}
}
``````
Hi all, above is my code for 10515 - Power et al. I don't get WA but always TLE. I don't understand why i get this error. It seems because of the isZero(String s) function scannig the string.

But even i check if (s.equals("0")) the judge still returns TLE.

lennie_2nd
New poster
Posts: 1
Joined: Thu Dec 20, 2007 8:55 am
sorry, can the input contain more than one space / leading / trailing zero?

i keep gaining WA and i dont know why..i've checked with the inputs given in the page and my code returned it right. do any of you have a critical testcase for me to try?

sreejond
New poster
Posts: 32
Joined: Fri May 23, 2008 6:16 pm
Contact:

### Re: 10515 - Power et al.

Streange I Got TLE???????
I can't understand why I got TLE?
Can any one help me?

Here is my code:

Code: Select all

``````#include<stdio.h>
#include<string.h>
#include<math.h>
#define MAX 10000

char m[1111],n[1111],fir[10],sec[10],res[1111];

/***********************************************************************************************/
void reverse(char *from,char *to)
{
long len,l;
len=strlen(from);
for(l=0;l<len;l++)
to[l]=from[len-l-1];
to[len]='\0';
}
/***********************************************************************************************/
void call_mult(char *first,char *sec,char *result)
{
char F[MAX],S[MAX],temp[MAX];
long f_len,s_len,f,s,r,t_len,hold,res;
f_len=strlen(first);
s_len=strlen(sec);
reverse(first,F);
reverse(sec,S);
t_len=f_len+s_len;
r=-1;
for(f=0;f<=t_len;f++)
temp[f]='0';
temp[f]='\0';
for(s=0;s<s_len;s++)
{
hold=0;
for(f=0;f<f_len;f++)
{
res=(F[f]-'0')*(S[s]-'0')+hold+(temp[f+s]-'0');
temp[f+s]=res%10+'0';
hold=res/10;
if(f+s>r)
r=f+s;
}
while(hold!=0)
{
res=hold+(temp[f+s]-'0');
temp[f+s]=res%10+'0';
hold=res/10;
if(f+s>r)
r=f+s;
f++;
}
}
for(r=r+1;r>0 && (temp[r]=='0' && temp[r-1]!='0');r--)
temp[r]='\0';
reverse(temp,result);
}
/***********************************************************************************************/

int main()
{
long i,r,num1,num2,len1,len2,pos1,pos2,len,k,j;
while(scanf("%s %s",m,n)==2)
{
len1=strlen(m);
len2=strlen(n);
if(len1==1 && m[0]=='0' && len2==1 && n[0]=='0')
break;
if(n[0]=='0')
{
printf("1\n");
continue;
}
if(n[0]=='1' && len2==1)
{
printf("%c\n",m[len1-1]);
continue;
}
if(len1>1)
pos1=len1-1;
else
pos1=0;
if(len2>2)
pos2=len2-2;
else
pos2=0;

k=0;
for(i=pos1;i<len1;i++)
fir[k++]=m[i];
fir[k]=0;
k=0;
for(i=pos2;i<len2;i++)
sec[k++]=n[i];
sec[k]=0;

num2=0;
for(i=0;i<k;i++)
num2=(num2*10)+(sec[i]-48);

sec[0]=fir[0];
sec[1]=0;

for(i=0;i<num2-1;i++)
{
k=0;
call_mult(fir,sec,res);
len=strlen(res);
for(j=0;j<len;j++)
sec[k++]=res[j];
sec[k]=0;
}

len=strlen(res);
r=res[len-1]-48;
printf("%ld\n",r);
}
return 0;
}``````
Md. Mijanur Rahman
New poster
Posts: 9
Joined: Thu Nov 13, 2008 2:08 pm

### Re: 10515 - Power et al.

/*
What's the problem of my code please anyone inform me.
*/

#include<stdio.h>

int main()
{

long long b,m,p,a[10000],i,x,power,j;

while(scanf("%lld %lld",&b,&p)==2)
{
if((b==0)&&(p==0))
break;
m=10;
i=0;
while(p!=0)
{
a[i++]=p%2;
p=p/2;
}
x=1;
power=b%m;
for(j=0;j<i;j++)
{
if(a[j]==1)
x=(x*power)%m;
power=(power*power)%m;
}
printf("%lld\n",x);

}
return 0;
}
abid_iut
Learning poster
Posts: 82
Joined: Wed Jul 16, 2008 7:34 am

### Re: 10515 - Power et al.

I think this code is giving correct output for every input is the board
But still WA
what is the problem??
pls someone help
here is the code:

Code: Select all

``````#include<iostream.h>
#include<stdio.h>
#include<string.h>

int num[12][10];
long m,n,i,j,l1,l2,t;
char str1[1000],str2[1000];

int main()
{
num[0][1]=0;num[0][2]=0;num[0][3]=0;num[0][4]=0;
num[1][1]=1;num[1][2]=1;num[1][3]=1;num[1][4]=1;
num[2][1]=2;num[2][2]=4;num[2][3]=8;num[2][4]=6;
num[3][1]=3;num[3][2]=9;num[3][3]=7;num[3][4]=1;
num[4][1]=4;num[4][2]=6;num[4][3]=4;num[4][4]=6;
num[5][1]=5;num[5][2]=5;num[5][3]=5;num[5][4]=5;
num[6][1]=6;num[6][2]=6;num[6][3]=6;num[6][4]=6;
num[7][1]=7;num[7][2]=9;num[7][3]=3;num[7][4]=1;
num[8][1]=8;num[8][2]=4;num[8][3]=2;num[8][4]=6;
num[9][1]=9;num[9][2]=1;num[9][3]=9;num[9][4]=1;

while(cin>>str1>>str2){
if(str1[0]=='0' && str2[0]=='0')break;
l1=strlen(str1);
m=str1[l1-1]-'0';
l2=strlen(str2);
if(l2>1){
t=str2[l2-2]-'0';
n=t*10;
t=str2[l2-1]-'0';
n+=t;
}
else n=str2[l2-1]-'0';
if(n==0)printf("1\n");
else {
n=n%4;
if(n==0)n=4;
printf("%d\n",num[m][n]);
}
}
return 0;
}
``````
i love to wait... wait for better... and better will come...
http://akanoi.webs.com/