https://www.acmicpc.net/problem/27433
<문제 요약>
0~20 사이의 N!을 구하는 문제
<문제풀이>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(br.readLine());
System.out.println(factorial(n));
}
static int factorial(int a){
if(a==1|a==0) return 1;
return a*factorial(a-1);
}
}
결과는 ,,
엥 뭐지 ???? 하다가 위의 코드로 20을 넣으니까
바로 long으로 바꿨다.
int 범위 : -2,147,483,648 ~ 2,147,483,647
long 범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
20! :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class P27433 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
long n=Long.parseLong(br.readLine());
System.out.println(factorial(n));
}
static long factorial(long a){
if(a==1|a==0) return 1;
return a*factorial(a-1);
}
}
바꿔주니 쉽게 통과했다!
문제 풀 때는 조건을 항상 잘 봐야한다