Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java로 X로 나누어 떨어지는 가장 작은 K자리 수 구하기

이 글에서는 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가 콘솔에 출력됩니다.