이 글에서는 X로 나누어 떨어지는 가장 작은 K자리 수를 구하는 방법을 Java 코드와 함께 살펴봅니다. 핵심 아이디어는 K자리 수 중 가장 작은 값인 10^(K-1)부터 시작하여, X로 나누어 떨어지지 않으면 그보다 큰 X의 배수 중 가장 작은 값으로 올림하는 것입니다.
예제 코드
import java.io.*;
import java.lang.*;
public class Demo{
public static double smallest_k(double x_val, double k_val){
double val = 10;
double MIN = Math.pow(val, k_val - 1);
if (MIN % x_val == 0)
return (MIN);
else
return ((MIN + x_val) - ((MIN + x_val) % x_val));
}
public static void main(String[] args){
double x_val = 76;
double k_val = 3;
System.out.println("The smallest k digit number divisible by x is ");
System.out.println((int)smallest_k(x_val, k_val));
}
}출력 결과
The smallest k digit number divisible by x is 152
코드 설명
Demo라는 이름의 클래스 안에는 smallest_k라는 함수가 정의되어 있습니다. 이 함수는 숫자 x를 나머지 없이 완전히 나눌 수 있는 k자리 수 중 가장 작은 값을 반환합니다.
동작 원리는 다음과 같습니다.
먼저 Math.pow(10, k_val - 1)을 사용해 K자리 수 중 가장 작은 값(MIN)을 계산합니다. 예를 들어 K가 3이면 MIN은 100이 됩니다. 만약 MIN이 X로 나누어 떨어진다면 그대로 반환하고, 그렇지 않다면 MIN 이상인 X의 배수 중 가장 작은 값으로 올려서 반환합니다.
main 함수에서는 x에 76, k에 3을 대입한 뒤 함수를 호출합니다. 결과적으로 3자리 수 중 76으로 나누어 떨어지는 가장 작은 수인 152가 콘솔에 출력됩니다.