2015-09-15 4 views
0

Я пытаюсь решить один factorial problem, представленный в кодеке на Java. ниже мой код, который я пробовал и получаю результаты для чисел до 12. Для 13!, я получаю неправильный ответ. И я получаю нулевой результат для больших чисел. Я нахожусь в фазе обучения, любезно помогите мне.Получение неправильного вывода при поиске факториала числа больше 12

import java.util.Scanner; 

public class Factorial { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner dd = new Scanner(System.in); 
     int a=dd.nextInt(); 
     long fact[]=new long[a]; 
     for (int i=0;i<a;i++) 
     { 
      int b = dd.nextInt(); 
      int factorial=0,d=0; 
      if(b==0) System.out.println(1); 
      for(int temp=b-1;temp>1;temp=d-1) 
      { 
       d=temp; 
       b=b*temp; 
      } 
      fact[i]=b; 
     } 
     for(int j=0;j<a;j++) 
     { 
      System.out.println(fact[j]); 
     } 
    } 

} 

ответ

1

13! больше, чем max int value, и вы вычисляете его на целые числа.

+0

Спасибо, я изменился до конца. Но мой выход превышает длинный предел и кажется после 21 !. Что делать для этого –

+0

Итак, чего вы пытаетесь достичь? Вы можете попробовать работать с BigDecimal или аналогичным классом – Nadir

+0

, можете ли вы решить эту проблему (https://www.codechef.com/problems/FCTRL2) –

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