Palindromic Squares : USACO

by


Slightly easier problem this time.
Simple solution, 
Missed the second condition in :
       if(remainder>base || remainder>=10)
and it took the failing test cases to remind of this mistake.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class palsquare
{
public static void main(String[] args) throws NumberFormatException, IOException
{
// System.out.println(decimalToBaseB(120, 11));
BufferedReader reader = new BufferedReader(new FileReader(new File("palsquare.in")));
int base = Integer.parseInt(reader.readLine());

PrintWriter out = new PrintWriter(new FileWriter(new File("palsquare.out")));

String result;
for(int i=1;i<=300;i++) {
result = decimalToBaseB(i*i, base);
if (isPalindrome(result)) {
// System.out.println(i + " " + decimalToBaseB(i, base) + " " + result);
out.println(decimalToBaseB(i, base) + " " + result);
}
}
out.close();
System.exit(0);
}

private static boolean isPalindrome(String result) {
int middle=result.length()/2;
for(int i=0;i<middle;i++)
if(result.charAt(i)!=result.charAt(result.length()-i-1))
return false;
return true;
}

private static final String symbols = "0123456789ABCDEFGHIJ"; // we support till base 20

private static String decimalToBaseB(int number, int base) {
int quotient=0, remainder=0;
String result="";
while(number!=0) {
quotient = number/base;
remainder = number%base;
if(remainder>base || remainder>=10) {
result= symbols.charAt(remainder) + result;
}
else {
result= remainder + result;
}
number= quotient;
}
return result;
}
}