728x90
반응형
문제
두 정수 a와b가 주어집니다.
실수 a/b의 값을 소수점 21번째 자리에서 내림하여 출력하는 프로그램을 작성하시오.

1차(실패)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a, b;
a=sc.nextDouble();
b=sc.nextDouble();
double ans = a/b;
// System.out.println(ans);
System.out.printf("%.20f", ans);
}
}
이유
java에서 float형은 7자리 까지만, double형은 16자리 까지만 연산이 가능하다.
문제에서는 21번째 자리에서 버림하라 했으니, 연산이 닿지 못한다.
2차(성공)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a, b;
a=sc.nextInt();
b=sc.nextInt();
System.out.print(a/b + ".");
a%=b;
for (int i=0;i<20;i++){
a*=10;
System.out.print(a/b);
a%=b;
}
}
}
해설
21번째 자리까지의 나머지를 구하려면 반복문을 통해서 나머지를 나눠준다.
첫 몫을 구해서 출력하고, 이후 a%=b를 통해 나머지를 변수 a에 대입한다.
이후 for문을 통해 a에 10을 곱하고 b로 나눠주면서 출력하는 동작을 하면된다.
이후 매번 a%=b를 통해 a값을 다음 값으로 초기화 시켜준다.
728x90
반응형
'알고리즘 > java' 카테고리의 다른 글
[BOJ] 달팽이(1913), 나선형 배열_Java (0) | 2024.07.24 |
---|
728x90
반응형
문제
두 정수 a와b가 주어집니다.
실수 a/b의 값을 소수점 21번째 자리에서 내림하여 출력하는 프로그램을 작성하시오.

1차(실패)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a, b;
a=sc.nextDouble();
b=sc.nextDouble();
double ans = a/b;
// System.out.println(ans);
System.out.printf("%.20f", ans);
}
}
이유
java에서 float형은 7자리 까지만, double형은 16자리 까지만 연산이 가능하다.
문제에서는 21번째 자리에서 버림하라 했으니, 연산이 닿지 못한다.
2차(성공)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a, b;
a=sc.nextInt();
b=sc.nextInt();
System.out.print(a/b + ".");
a%=b;
for (int i=0;i<20;i++){
a*=10;
System.out.print(a/b);
a%=b;
}
}
}
해설
21번째 자리까지의 나머지를 구하려면 반복문을 통해서 나머지를 나눠준다.
첫 몫을 구해서 출력하고, 이후 a%=b를 통해 나머지를 변수 a에 대입한다.
이후 for문을 통해 a에 10을 곱하고 b로 나눠주면서 출력하는 동작을 하면된다.
이후 매번 a%=b를 통해 a값을 다음 값으로 초기화 시켜준다.
728x90
반응형
'알고리즘 > java' 카테고리의 다른 글
[BOJ] 달팽이(1913), 나선형 배열_Java (0) | 2024.07.24 |
---|