Page 5 of 11

Posted: Wed Oct 08, 2003 8:06 am
by Joseph Kurniawan
Try the formula:
a log b = log b / log a

PS: a in a log b is the base of the log. So when a=2 and b=16,
then a log b is 4 since a^4=b.

Posted: Wed Oct 08, 2003 8:57 am
by shamim
Why not using the pow() function. :wink:

Posted: Wed Oct 08, 2003 11:12 am
by Maarten
why would you?
the formula exp( log(p)/n ) correctly calculates the nth root of p

Posted: Thu Oct 09, 2003 3:46 am
by bignad98
Try the formula:
a log b = log b / log a
Maybe my math skills are a little rusty, but I thought the formula was

a log b = log (b^a) :wink:

and for the compiler warnings (Visual C++ doesn't have any problem with that,) the problem statement guarantees k to be less than 1E9. i used double for the precision in the log statement, and then since it is guaranteed by problem statement to fit in long, i did the basic round-and-convert. i also tried submitting the answer as a double with the ios::showpoint flag off, but no dice.

thanks for the replies...although i haven't had any problems previously either copy and pasting or uploading the code from visual, could that be a problem?

thanks again

Posted: Thu Oct 09, 2003 6:14 am
by Joseph Kurniawan
To bignad:
Yes, a log b equals log(b^a). That's why I added some note since I don't know how to type 'a' in superscript model. The 'a' in 'a log b' here doesn't mean a * log b, get it?? :wink: :wink:
I recommend this formula since it's more precise.

Posted: Thu Oct 09, 2003 6:45 pm
by bignad98
Ok I'm sorry but I'm still having some problems understanding that formula. i think i understand it now to mean

a log(a) b = log(a) b / log(a) a

where the a in parenthesis means log(base a) of.
PS: a in a log b is the base of the log
so using natural logs, it seems that the formula would be

e ln b = ln b / ln e --> e ln b = ln b

can you tell me where i'm going wrong? and even after that, i'm unclear on how to express p=k^n in the form ln b / ln a:

ln p = ln k^n --> ln p = n ln k --> 1/n = ln k / ln p -->(by blind app of formula) --> 1/n = p ln k

sorry, i have been out of school for a while.. :(

Posted: Fri Oct 10, 2003 6:35 am
by Joseph Kurniawan
Sorry, I got the problem wrong! :oops: :oops:
shamim is right. use pow() function :
pow(p,1/n);
Good luck!! :wink: :wink:

113 - Why Wrong Answer? :'(

Posted: Fri Nov 14, 2003 6:54 pm
by lord_burgos
113 - Why Wrong Answer? :cry:
This is my code.

k = 10^(log10(p)/n);
[c]

/*
Power Criptography
problem: 113
*/
# include <stdio.h>
# include <math.h>
# include <string.h>

main(){
int n,val,c,i;
double x;
int k;
char p[200];
while(scanf("%d\n",&k) != EOF){
gets(p);
n = strlen(p);
c = 100;
val = 0;
for(i = 0; i<4;i++ , c /=10){
if(p == NULL) break;
val += (p-'0')*c;
}
x = log10((double)val);
x = x-3+n;
x /= k;
printf("%.0lf\n",pow(10,x));
}
return 0;
}[/c]

Posted: Sat Nov 15, 2003 12:49 pm
by shamim
[cpp]char p[200];
while(scanf("%d\n",&k) != EOF){
gets(p);
[/cpp]

The given numbers will actually fit in the double data type, so there is no need to consider string. :wink:[/b]

Posted: Sat Nov 15, 2003 12:51 pm
by sohel
Why don't you use pow(p,1/n);
:P

Power of Cryptography (#113)

Posted: Sat Nov 22, 2003 1:36 am
by Sensor
I have a problem:
It seems to be OK but I got WA??? I can't find error!
Can somebody help me?

{@BEGIN_OF_SOURCE_CODE}
{ @JUDGE_ID: XXX 113 Pascal}
program proga;
var datan,datap:string;

procedure nsqrt(ns,ps:string);
var n,p,ost,res:integer;
code,v:integer;
begin
val(ns,n,code);
v:=(length(ps) div n)+1;
ost:=length(ps)-v;
if ost>0 then
begin
val(copy(ps,1,v),p,code);
res:=round(exp(1/n*(ln(p)+ost*ln(10))));
end else
begin
val(ps,p,code);
res:=round(exp(1/n*(ln(p))));
end;
writeln(res);
end;

begin
while not eof(input) do
begin
readln(datan);
readln(datap);
nsqrt(datan,datap);
end;
end.
{@END_OF_SOURCE_CODE}

&#65283;113 why compile error???pliz help

Posted: Tue Nov 25, 2003 8:13 am
by Morning
[c]
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main(void)
{
long n,p,loop;
while(scanf("%ld\n%ld",&n,&p)==2)
{
for(loop=1;loop<=p;loop++)
{
if((long)(pow(n,loop))==p)
{
printf("%ld\n",loop);
break;
}
}
}
}[/c]

Posted: Tue Nov 25, 2003 8:40 am
by deddy one
don't use conio.h
it will produce compile error

Posted: Fri Nov 28, 2003 6:13 pm
by Morning
yeah,i got it.thanks:)

Posted: Sat Nov 29, 2003 12:16 pm
by sohel
From your stats, it looks like that you have 39 posts (experienced) and still you don't know that 'conio.h' gives a compile error. Very Strange!!!