2015-11-01 3 views
0

Я написал программу для расчета наибольшего продукта палиндрома из 2 трехзначных чисел. Я решил эту проблему в Project Euler, но решение этого же в HackerRank не дает некоторых тестовых примеров. Интересно, что случилось.Самый большой продукт палиндрома

Входной сигнал:

Первая строка содержит T, который обозначает число тестовых примеров. За этим следует Т строк, каждая из которых содержит целое число, Н.

Ограничения:

1≤T≤100

101101<N<1000000

public class Solution { 
    static boolean isPalin (int i){ 
    int low = 0; 
    String a = String.valueOf(i); 
    int high = a.length() - 1; 

    while(low<high){ 
     if(a.charAt(low) == a.charAt(high)){ 
     low++; 
     high--; 
     }else{ 
      return false; 
     } 
    } 
    return true; 
} 
public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int noOfCases = in.nextInt(); 
    int currMax = 0, result = 0; 
    int no_one, no_two; 
    int largest = -1; 

    for(int i=0; i<noOfCases; i++){ 

     currMax = in.nextInt(); 

     for(no_one = 100; no_one<=999; no_one++){ 
      for(no_two = 101; no_two<=999; no_two++){ 
       result = no_one * no_two; 

       if(isPalin(result)){ 
        if(result > largest && result < currMax) 
         largest = result; 
       } 
      } 
     } 
     System.out.println(largest); 
    } 
} 
+1

Знаете ли вы, в каких случаях это не удается? Можете ли вы опубликовать пример их ввода? – Pshemo

+0

@Pshemo Я обновил вопрос –

+0

На стороне примечание: это, вероятно, не лучший способ сделать это. Вы проверяете 900 * 899 номеров, но есть только 900 шестизначных чисел палиндрома: 100001, 101101, 102201 ... 998899, 999999. – m69

ответ

1

Вы тестирования нескольких случаев, но только сброс по величине -1 в самом начале программы.

Попробуйте добавить largest=-1; в начало цикла по i.

+0

Черт, я почти забыл –

Смежные вопросы