I got WA every time..... plz help me ><
plz ><
[cpp]#include <iostream>
#include <math.h>
#include <string>
long long i,j,k,l,tmp,a,digits[100];
string strg;
int main() {
while(cin >> strg,strg!="0") {
j=2;
for(i=0,k=strg.length()-1;i<strg.length();++i) {
digits=strg[k-i]-48;
if(digits>j)
j=digits;
}
for(;j<100;++j) {
tmp=0;
a=1;
for(k=0;k<i;++k) {
tmp+=digits[k]*a;
a*=j;
}
a=sqrt(tmp);
if(tmp==a*a) {
cout << j << endl;
break;
}
}
}
}
[/cpp]
636 - Squares (III)
Moderator: Board moderators
636 - WA. Why?
Why WA? Help me, please!
program p636;
var
s:string;
b,i,base,len,n:longint;
mas:array[1..100] of integer;
begin
while true do
begin
readln(s); len := length(s);
if s = '0' then break;
for i:=1 to len do mas[i] := Ord(s[i]) - Ord('0');
b := 2;
for i:=1 to len do
if mas[i] > b then b := mas[i];
for base:=b+1 to 100 do
begin
n := 0;
for i:=1 to len do
n := base*n + mas[i];
i := trunc(sqrt(n));
if i*i=n then break;
end;
writeln(base);
end;
end.
program p636;
var
s:string;
b,i,base,len,n:longint;
mas:array[1..100] of integer;
begin
while true do
begin
readln(s); len := length(s);
if s = '0' then break;
for i:=1 to len do mas[i] := Ord(s[i]) - Ord('0');
b := 2;
for i:=1 to len do
if mas[i] > b then b := mas[i];
for base:=b+1 to 100 do
begin
n := 0;
for i:=1 to len do
n := base*n + mas[i];
i := trunc(sqrt(n));
if i*i=n then break;
end;
writeln(base);
end;
end.
636
Code: Select all
[c]
#include<stdio.h>
#include<math.h>
int main()
{
long n, temp;
int i, j;
char num[12];
double t, val;
while( scanf("%s",num) == 1 ) {
if( !(n = atoi(num)) )
exit(0);
i = 1;
for( j = strlen(num)-1; j >= 0; j-- )
if( i < num[j]-'0' )
i = num[j]-'0';
i++;
for( ; i < 101; i++) {
temp = n;
val = 0.0;
for( j = 0; temp > 0; j++ ) {
val += (temp%10)*pow(i, j);
temp /= 10;
}
t = sqrt(val);
if( t*t == val )
break;
}
printf("%d\n",i);
}
return 0;
}
[/c]
Any bugs ???
Suman
636 - Squares
I dunno why im getting WA 
is it wrong presentation?

Code: Select all
#include <iostream>
#include<math.h>
using namespace std;
long long x,t,res,lsd,base=3,num,maxi;
long long convert(long long base)
{
long long count=0,res=0;
while(t!=0)
{ lsd=t%10;
res+=(lsd*(pow(base,count)));
t/=10;
count++;
}
return res;
}
long long issquare(long long no)
{
if(sqrt((long long)no)*sqrt((long long)no)==no) { return 1;}//cout<<no<<"is square"<<endl;
//cout<<no<<"is not square"<<endl;
return 0;
}
main()
{
long long retcon,retis,current_base,temp;
//cin>>x>>base;
//t=x;
//convert(base);
//issquare(81);
cin>>num;
while(num!=0)
{
maxi=0;
t=num;
while(t!=0)
{
temp=(t%10);
if (temp>maxi) maxi=temp;
t/=10;
}
current_base=maxi+1;
while(current_base<100)
{
t=num;
// cout<<"current_base:"<<current_base;
retcon=convert(current_base);
// cout<<"\tAt base : "<<current_base<<" \t"<<num<<" is :"<<retcon<<endl;
retis=issquare(retcon);
if(retis)
{
cout<<current_base;
break;
}
current_base++;
}
cout<<endl;
cin>>num;
}
}
is it wrong presentation?
Re: 636 - Squares
I have no clue why I'm getting WA either :\ .. except maybe that the numbers get too large for long long?
brianfry save us!
<3
I was searching for the highest digit in the number... but I had
and num[0] should've been num :\
brianfry save us!

Code: Select all
Got AC
Code: Select all
for (int i; i < strlen(num); ++i) highest = max(highest, num[0]-0x30);
all that matters is AC